jstack − Javaプロセス、コア・ファイルまたはリモート・デバッグ・サーバーに対するJavaスレッドのスタック・トレースを出力します。このコマンドは試験的なもので、サポートされていません。
jstack [ options ] pid
jstack [ options ] executable core
jstack [ options ] [ server−id@ ] remote−hostname−or−IP
options
コマンド行オプション。オプションを参照してください。
pid
出力するスタック・トレースのプロセスIDです。プロセスはJavaプロセスである必要があります。マシン上で実行しているJavaプロセスの一覧を取得するには、jps(1)コマンドを使用します。
実行可能ファイル
コア・ダンプの作成元のJava実行可能ファイル。
コア
出力するスタック・トレースのコア・ファイルです。
remote−hostname−or−IP
リモート・デバッグ・サーバーのホスト名またはIPアドレス。jsadebugd(1)を参照してください。
server−id
複数のデバッグ・サーバーが同一のリモート・ホストで実行している場合の、オプション固有のID。
jstackコマンドは、指定されたJavaプロセス、コア・ファイルまたはリモート・デバッグ・サーバーに対するJavaスレッドのJavaスタック・トレースを出力します。Javaフレームごとに、フルクラス名、メソッド名、バイトコード・インデックス(bci)、および行番号(利用可能な場合)が出力されます。−mオプションを使用すると、jstackコマンドは、すべてのスレッドのJavaフレームとネイティブ・フレームの両方を、プログラム・カウンタ(PC)とともに出力します。ネイティブ・フレームごとに、PCに最も近いネイティブ・シンボル(利用可能な場合)が出力されます。C++分解名は分解解除されません。C++名を分解解除するには、このコマンドの出力をc++filtにパイプします。指定されたプロセスが64ビットJava仮想マシン上で実行されている場合は、−J−d64オプションを指定する必要があります(例: jstack −J−d64 −m pid)。
注意 このユーティリティはサポート対象外であり、将来のJDKのリリースでは利用できなくなる可能性があります。dbgeng.dllファイルが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。また、PATH環境変数には、ターゲット・プロセスによって使用されるjvm.dllの場所、またはクラッシュ・ダンプ・ファイルが生成された場所が含まれるようにしてください。次に例を示します。
set PATH=<jdk>\jre\bin\client;%PATH%
−F
jstack [−l] pidが応答しない場合にスタック・ダンプを強制します。
−l
長形式のリスト。所有java.util.concurrentの所有できるシンクロナイザの一覧など、ロックについての追加情報を印刷します。http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.htmlにある AbstractOwnableSynchronizerクラス記述を参照してください
−m
JavaおよびネイティブC/C++フレームの両方を持つ混合モードのスタック・トレースを出力します。
−h
ヘルプ・メッセージが出力されます。
−help
ヘルプ・メッセージが出力されます。
混合モードのスタック・トレースでは、−mオプションはリモート・デバッグ・サーバーでは機能しません。
• jps(1)