5.7.2 拡張verbosegc情報の取得

J2EEサーバのusrconf.cfgファイルに,次の表に示すオプションを指定すると,拡張verbosegc情報を取得できます。拡張verbosegc情報からは,そのサーバで必要とするJavaヒープ領域サイズ,Perm領域サイズなどを見積もるための情報が取得できます。なお,Javaログには,OutOfMemoryError発生時のスタックトレースも出力されます。

表5-23 拡張verbosegc情報の取得を指定するオプション

オプション意味
-XX:+HitachiVerboseGC拡張verbosegc情報を出力するかどうかを指定します。ガーベージコレクションの内部領域であるEden,Survivor,Tenured,Perm種別ごとに情報を出力します。デフォルトでは出力されません。-XX:+HitachiVerboseGCと指定すると拡張verbosegc情報が出力され,-XX:-HitachiVerboseGCと指定すると拡張verbosegc情報は出力されません。
-XX:+HitachiVerboseGCPrintDate拡張verbosegc情報を出力するログの各行の先頭に,ログを出力した日付を表示するかどうかを指定します。
-XX:+HitachiVerboseGCCpuTimeガーベージコレクションの開始から終了までの間で,ガーベージコレクションの実行スレッドのユーザモードおよびカーネルモードに費やされた時間だけを表示するか,ガーベージコレクションの開始から終了までの実時間を表示するかを指定します。
ただし,HP-UXを使用している場合,この機能は使用できません。オプションを指定しても無効になります。
-XX:HitachiVerboseGCIntervalTime=<時間間隔>-XX:+HitachiVerboseGCに対する出力時間の間隔を数値(単位:秒)で指定します。時間間隔のデフォルト値は0(ガーベージコレクション発生のたびに出力)です。なお,時間間隔を指定すると,その時間間隔の間に発生したガーベージコレクション回数も表示されます。
-XX:+HitachiVerboseGCPrintCause拡張verbosegc情報を出力するログに,ガーベージコレクションが発生した原因を表示するかどうかを指定します。
-XX:+HitachiCommaVerboseGC拡張verbosegc情報を出力するログをCSV形式で出力するかどうかを指定します。CSV形式で出力する場合,拡張verbosegc情報の括弧「( )」「[ ]」「< >」や,区切り「:」はすべて省略され,数値または文字列が「,」で区切られて出力されます。
-XX:+HitachiVerboseGCPrintTenuringDistributionSurvivor領域の年齢分布情報を出力するかどうかを指定します。デフォルトでは出力されません。出力形式や出力情報については,「8.11 Survivor領域の年齢分布情報出力機能」を参照してください。
-XX:+HitachiVerboseGCPrintJVMInternalMemoryJavaVM内部で管理しているヒープ情報を日立JavaVMログファイルに出力するかどうかを指定します。
-XX:+HitachiVerboseGCPrintThreadCountJavaスレッドの数を監視するために,Javaスレッドの数を日立JavaVMログファイルに出力するかどうかを指定します。
-XX:+HitachiVerboseGCPrintDeleteOnExitjava.io.File.deleteOnExit()を呼び出したことによってJavaVMが確保した累積のヒープサイズとメソッドの呼び出し回数を,日立JavaVMログファイルに出力するかどうかを指定します。

ログファイルの出力形式と出力例を次に示します。

出力形式

[id] <date> (Skip Full:full_count, Copy:copy_count) [gc_kind gc_info, gc_time secs][Eden: eden_info][Survivor: survivor_info][Tenured: tenured_info][Perm: perm_info] [cause:cause_info] [User: user_cpu secs] [Sys: system_cpu secs][IM: jvm_alloc_size, mmap_total_size, malloc_total_size][TC: thread_count][DOE: doe_alloc_size, called_count]

説明
  • id:日立JavaVMログファイル識別子
    日立JavaVMログファイル識別子を次の表に示します。この識別子は,ログをログの内容(機能)ごとにフィルタリングして調査する場合に利用できます。

    表5-24 日立JavaVMログファイル識別子

    識別子ログの内容
    CLTクラスライブラリのスタックトレース
    JMSJITコンパイルを抑制したJITコンパイラスレッドに関する情報
    OMHOutOfMemoryの発生頻度に関する情報
    OOMOutOfMemoryError発生時の例外情報とスタックトレース
    PTDSurvivor領域の年齢分布情報
    VGC拡張verbosegc情報
  • date:日時
  • full_count:Full GCをスキップした回数(-XX:HitachiVerboseGCIntervalTimeを指定した場合だけ)
  • copy_count :Copy GCをスキップした回数(-XX:HitachiVerboseGCIntervalTimeを指定した場合だけ)
  • gc_kind:ガーベージコレクション種別(Full GCまたはGC)
  • gc_info:ガーベージコレクション情報(ガーベージコレクション前の領域長 -> ガーベージコレクション後の領域長(領域サイズ))
    (例) 264K->0K(512K)
  • gc_time:ガーベージコレクション経過時間(単位:秒)
  • eden_info:Eden情報
  • survivor_info:Survivor情報
  • tenured_info:Tenured情報
  • perm_info:Perm情報
  • cause_info:ガーベージコレクションの原因
  • user_cpu secs:ガーベージコレクションスレッドがユーザモードに費やしたCPU時間(単位:秒)
  • system_cpu secs:ガーベージコレクションスレッドがカーネルモードに費やしたCPU時間(単位:秒)
  • jvm_alloc_size:JavaVM内部で管理している領域のうち,現在使用中の領域のサイズ(mmap_total_sizeとmalloc_total_sizeの合計サイズのうち,現在使用中の領域のサイズ)(-XX:+HitachiVerboseGCPrintJVMInternalMemoryを指定した場合だけ)
  • mmap_total_size:JavaVM内部で管理している領域のうち,mmap(Windowsの場合はVirtualAlloc)で割り当てたCヒープの総サイズ(-XX:+HitachiVerboseGCPrintJVMInternalMemoryを指定した場合だけ)
  • malloc_total_size:JavaVM内部で管理している領域のうち,mallocで割り当てたCヒープの総サイズ(-XX:+HitachiVerboseGCPrintJVMInternalMemoryを指定した場合だけ)
  • thread_count:Javaスレッドの数(-XX:+HitachiVerboseGCPrintThreadCountを指定した場合だけ)
  • doe_alloc_size:java.io.File.deleteOnExit()を呼び出して確保した累積のヒープサイズ(-XX:+HitachiVerboseGCPrintDeleteOnExitを指定した場合だけ)
  • called_count:java.io.File.deleteOnExit()の呼び出し回数(-XX:+HitachiVerboseGCPrintDeleteOnExitを指定した場合だけ)
出力例
-XX:+HitachiCommaVerboseGCオプションを指定した場合の出力例を次に示します。

VGC,Fri Jan 23 21:37:50 2004,11,41,0,GC,16886,16886,65088,0.0559806,
4094,0,4096,447,447,448,12345,16439,60544,1116,1116,4096,0,0.0312500, 0.0156250,729,928,0,509,2167,2054
VGC,Fri Jan 23 21:37:55 2004,6,24,0,Full GC,65082,65082,65088,0.4294532,
4094,4094,4096,447,447,448,60541,60541,60544,1116,1116,4096,0,0.0156250, 0.0312500,729,928,0,509,16,170