JVM(IBMJava)が異常終了で落ちる時にダンプが出力されるが,デフォルトだと実行ユーザのホームディレクトリに出力されるらしく,ホームディレクトリのファイルシステムが小さかったりすると,せっかく吐かれたダンプが途中で切れてしまうというかなり残念な状態になる.
- Java Dump (javacore.txt)
- Heap Dump (heapdump.phd)
- System Dump (core.dmp)
- Snap Dump (Snap.trc)
-Xdump設定確認
現在の設定は実行ユーザで "java -Xdump:what" を投げれば確認できる.以下は出力結果を抜粋したもので,こんな感じに出力される.
Registered dump agents
- -
dumpFn=doSystemDump
label=C:\sdk\jre\bin\core.%Y%m%d.%H%M%S.%pid.dmp
- -
dumpFn=doSnapDump
label=C:\sdk\jre\bin\Snap%seq.%Y%m%d.%H%M%S.%pid.trc
- -
dumpFn=doHeapDump
label=C:\sdk\jre\bin\heapdump.%Y%m%d.%H%M%S.%pid.phd
- -
dumpFn=doJavaDump
label=C:\sdk\jre\bin\javacore.%Y%m%d.%H%M%S.%pid.txtIBM MustGather: Using the -Xdump Option - United States
- -
"-Xdump:
You can change these defaults at runtime. For example, you can direct Java dump files into a separate directory for each process, and guarantee unique files by adding a sequence number to the file name using:
IBM MustGather: Using the -Xdump Option - United States
-Xdump設定変更
デフォルト定義を変更するには,実行ユーザの.profileなどで以下の環境変数を定義しておく必要がある.全部で3種類あるので基本的には合わせて設定しておくのが良さそう.
IBM_JAVACOREDIR : Javaダンプ出力先
WAS虎の巻(運用管理編): 第3回「障害時運用」
IBM_HEAPDUMPDIR : Heapダンプ出力先
IBM_COREDIR : Systemダンプ、snap出力先
JavaエンジニアならJavaCore/HeapDumpに慣れておく
SI現場でJavaCore/HeapDumpを解析する場面と言えば,主に障害時やパフォーマンス改善の問題判別だったりするので,詳細な解析は後回しにしつつも,ザッと全体に目を通してなんとなくこんな感じだなってすぐ把握できるとJavaエンジニアとして強いと思う.JavaCoreであればjavacore読み方あたりを参考にテキストエディタで読んでみたり,HeapDumpであればツールを使って巨大なオブジェクトを探してみたり.自分自身もまだまだ勉強不足だなと痛感…!
関連エントリー
PD職人 @ Wiki javacore取得
PD職人 @ Wiki javacore読み方
Javaのスレッドやメモリ関連で最近よく使用しているツールメモ - HHeLiBeXの日記 正道編
JavaCoreとHeapDumpを読む - 自分の仕事を憎むには人生は余りにも短い
メモリーよ、ありがとう
Java技術、IBMスタイル: モニタリングと問題判別
ダンプからデバッグする
IBM MustGather: Using the -Xdump Option - United States
IBM WAS V8のjavacore、heapdump出力について - Japan
IBM SDK for Java: Diagnostics Guide