スレッドダンプには、Javaプロセスの各スレッドの情報(スタックトレース形式)が含まれているため、ハングアップやデッドロックなどの動作具合を調査できます。
スレッドダンプが出力される契機および出力先
[出力契機]
一定の条件を満たした場合、コンテナの機能により自動的に採取される場合と利用者の任意のタイミングで手動による採取があります。
自動採取:アプリケーションがタイムアウトまたは無応答になった場合
手動採取:
kill -QUIT [プロセスID]でJava VMに対してQUITシグナルを送り採取します。
jcmdコマンドで採取します。
[出力先]
標準出力、JavaVMの出力をロギングしているファイル
[出力契機]
利用者の任意のタイミングで手動で採取できます。
ターミナルからJavaプログラムを起動した場合
以下、どちらかの方法で採取できます。
[Ctrl]+[\]キー(英語キーボードの場合バックスラッシュキー)押下
kill -QUIT [プロセスID]
ターミナル以外からJavaプログラムを起動した場合
kill -QUIT [プロセスID]で採取します。
コマンドプロンプトからJavaプログラムを起動した場合
以下、どちらかの方法で採取できます。
[Ctrl]+[Break]キー押下
jcmdコマンド
コマンドプロンプト以外からJavaプログラムを起動した場合
jcmdコマンドで採取します。
[出力先]
コンソール(標準出力)
注意
"-Xrs"オプションが指定されたJavaプロセスの場合、当該プロセスへ送られた[Ctrl]+[Break]キー押下またはQUITシグナルに対する動作は、OSのデフォルト動作になります。
そのため、"-Xrs"オプションを指定したJavaプロセスに対して[Ctrl]+[Break]キー押下またはQUITシグナルが送られると、当該Javaプロセスは強制終了または異常終了します。
スレッドダンプを出力する可能性があるJavaプロセスに対して、" -Xrs"オプションは指定しないでください。
ただし、Windowsでサービスとして登録されるJavaプロセスの場合は、" -Xrs"オプションを指定しない場合、ログオフ時に強制終了してしまいます。これが不都合な場合は、" -Xrs"オプションを指定してください。