GCログの取得と解析¶
OpenJDKのGCログの取得¶
アプリケーション実行時のJavaVMのオプションでGC関係のログの出力を指定します。
GCログの出力指定¶
JavaVMの内部ログを出力するオプション -Xlog
を指定してGCに関するログを出力します。
ちょっと複雑ですが、次の書式です。
書式
-Xlog[:[selections][:[output][:decorators][:output-options]]]
- selectionsの指定では、gc=info のように、JavaVM内のログのタグ(分類)とログレベルを指定
- outputの指定では、ログを標準出力、標準エラー出力、ファイル出力などから指定
- decoratorsの指定ではログメッセージに追加して出力する項目(タイムスタンプ、プロセス/スレッドIDなど)を指定
- output-optionsの指定ではファイルのログローテーション等を指定
タグは、gcだけでなく、gc,heap、gc,taskなどいくつか種類があるので、gcに関する全てのタグを指定する場合は、gc*=debug
のようにワイルドカード付の指定をします。
タグで、gc,heapを指定するときは、gc+heap
と指定することも可能です。
出力例(-Xlog:gc)¶
[0.012s][info][gc ] Using G1 [102.462s][info][gc ] GC(0) Pause Young (Normal) (G1 Evacuation Pause) 20M->3M(256M) 12.608ms [382.479s][info][gc ] GC(1) Pause Young (Normal) (G1 Evacuation Pause) 29M->4M(256M) 25.421ms [2108.431s][info][gc ] GC(2) Pause Young (Normal) (G1 Evacuation Pause) 156M->5M(256M) 1.926ms
デフォルトの出力では、ログのレベルinfo、タグがgcのみのメッセージがuptimeと共に出力されます。