javacore(スレッドダンプの取得/Windowsの場合)
形式
javacore [-i|-f] -p <プロセスID>
機能
コマンド実行時のスレッドダンプを取得します。なお,このコマンドは,Windows用です。
引数
- -i
-
スレッドダンプの出力処理の実行を確認するメッセージが表示されます。表示されたメッセージに対してyまたはnを入力します。このとき,yを入力するとスレッドダンプが出力されます。nを入力すると,何も出力しないで処理を終了します。省略した場合,-fオプションが指定されないかぎり,このオプションは有効です。
- -f
-
-iオプションを無効にします。省略した場合,-iオプションが有効になります。
- -p <プロセスID>
-
<プロセスID>には,スレッドダンプを取得するjavaプログラムのプロセスIDを指定します。
戻り値
- 0:
-
正常終了しました。
- 1:
-
異常終了しました。
- 2:
-
一定時間内にスレッドダンプ出力処理終了の応答がありませんでした。
入力例
-
-fオプションを省略してjavacoreコマンドを実行します。
% javacore -p 8326
-
スレッドダンプの出力処理の実行を確認するメッセージが表示されます。
Output a thread dump:?(y/n)
-
スレッドダンプを出力する場合はyを,出力しない場合はnを入力します。
Output a thread dump:?(y/n)y
-
実行中のjavaプログラムは,カレントディレクトリに次のファイルを作成し,プログラムを継続します。
- スレッドダンプ
-
javacore<プロセスID>.<日時>.txt
出力メッセージ
次のエラーメッセージまたは警告メッセージを出力した場合,スレッドダンプは取得されません。
項番 |
メッセージ |
説明 |
---|---|---|
1 |
usage: javacore [-f|-i] -p process-id |
コマンドの引数が不正です。 |
2 |
javacore: illegal option -- <オプション> |
コマンドの引数に指定した<オプション>が不正です。 |
3 |
javacore: can't communicate with process <プロセスID>. |
引数に指定した<プロセスID>に問題があるため,通信できません。 または,引数に指定した<プロセスID>に該当するプロセスが存在しません。 |
4 |
<プロセスID>: Not owner |
コマンドの引数に指定した<プロセスID>に0が指定されています。 |
5 |
<プロセスID>: Now processing previous request, this request canceled |
コマンドの引数に指定した<プロセスID>のプロセスがすでに処理中です。 |
6 |
javacore: can't create work file at temporary directory, this request canceled |
一時ファイル用ディレクトリに参照および書き込み権限がありません。 |
7 |
javacore: can't get temporary directory, this request canceled |
GetTempPath()APIがエラーリターンしたため,一時ファイル用ディレクトリが取り出せません。 |
8 |
javacore: unexpected error occurred: <エラー原因> |
コマンド実行中に予期しないエラーが発生しました。 |
9 |
<プロセスID>: Timeout occurred. Java process not responding. |
コマンドの引数に指定した<プロセスID>に該当するプロセスから,一定時間内にスレッドダンプ出力処理終了の応答がありませんでした。 |
10 |
javacore: please delete <削除できなかったファイル名> in <削除できなかったファイルのフルパス>. |
コマンド終了時にjavacoreコマンドの内部処理で作成したファイルを削除できませんでした。<削除できなかったファイルのフルパス>にある,削除できなかったファイルを削除してください。 |
注意事項
-
同じJavaプロセスに対して,同時にjavacoreコマンドは実行できません。前回のjavacoreコマンドによるスレッドダンプ出力処理が終了したあとに実行してください。
-
次の場合,メッセージ「<プロセスID>: Timeout occurred. Java process not responding.」が出力されてjavacoreコマンドが終了することがあります。
-
メモリ使用量が1ギガバイトを超えるようなJavaプロセスに対してjavacoreコマンドを実行した場合
-
システムが高負荷の状態でjavacoreコマンドを実行した場合
メッセージが出力されても,対象となるJavaプロセスのカレントディレクトリにcore.<プロセスID>が生成され,ファイルサイズが徐々に増えている場合は処理が正常に行われています。その場合はJavaプロセスを停止させないようにしてください。
-