jstack
コマンドは、指定されたJavaプロセスに関するJavaスレッドのJavaスタック・トレースを出力する場合に使用します。このコマンドは試験的なものであり、サポート対象外になっています。
形式
jstack [options] pid
options
これは、jstack
コマンド行オプションです。「jstackコマンドのオプション」を参照してください。
pid
出力されるスタック・トレースのプロセスIDです。プロセスはJavaプロセスである必要があります。マシン上で実行されているJavaプロセスのリストを取得するには、ps
コマンドを使用するか、JVMプロセスが別のDockerインスタンスで実行されていない場合はjpsコマンドを使用します。
注意:
JDK 10で、Attach APIを使用して、別のDockerプロセスで実行されているJavaプロセスに接続するためのサポートが追加されました。ただし、jps
コマンドでは、別のDockerインスタンスで実行されているJVMプロセスをリストしません。Dockerコンテナ内の仮想マシンとLinuxホストの接続を試みる場合は、ps
などのツールを使用して、JVMのPIDを参照する必要があります。説明
jstack
コマンドは、指定されたJavaプロセスに関するJavaスレッドのJavaスタック・トレースを出力します。Javaフレームごとに、完全なクラス名、メソッド名、バイト・コード・インデックス(BCI)および行番号(使用可能な場合)が出力されます。C++分解名は分解解除されません。C++名を分解解除するために、このコマンドの出力をc++filt
にパイプで渡すことができます。指定したプロセスが64ビット版のJVMで実行されている場合は、-J-d64
オプション(例: jstack -J-d64pid
)の指定が必要になることがあります。
注意:
このコマンドはサポート対象外であり、将来のJDKリリースでは利用できなくなる可能性があります。dbgeng.dll
ファイルが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。PATH
環境変数に、ターゲット・プロセスで使用されるjvm.dll
の場所またはコア・ダンプ・ファイルが生成された場所を含める必要があります。