プロジェクト

全般

プロフィール

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と共に出力されます。


1年以上前に更新