7.6.2 -XX:[+|-]HitachiVerboseGC
GCが発生した場合、拡張verbosegc情報をJavaVMログファイルに出力します。
説明
GCが発生した時の拡張verbosegc情報を出力するかどうかを指定します。
- 出力形式(SerialGCの場合)
-
[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][Metaspace: Metaspace_info] [class space: class_space_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] [CCI: cc_used_sizeK, cc_max_sizeK, cc_infoK]
出力内容を次に説明します。
出力項目
出力内容
id
VGC(JavaVMログファイル識別子)。
date
GC開始日時。
-XX:-HitachiVerboseGCPrintDateオプションが指定された場合、出力されません。
full_count
FullGC情報出力をスキップした回数。
-XX:HitachiVerboseGCIntervalTimeオプションが指定された場合に出力されます。
copy_count
CopyGC情報出力をスキップした回数。
-XX:HitachiVerboseGCIntervalTimeオプションが指定された場合に出力されます。
gc_kind
GC種別。"FullGC"、"GC"が出力されます。
gc_info
GC情報。次の形式で出力されます。
GC前の領域長 -> GC後の領域長 (領域サイズ)
gc_time
GC経過時間。
Eden
Edenの種別。"DefNew::Eden"が出力されます。
eden_info
Eden情報。次の形式で出力されます。
GC前の領域長 -> GC後の領域長 (領域サイズ)
Survivor
Survivorの種別。"DefNew::Survivor"が出力されます。
survivor_info
Survivor情報。次の形式で出力されます。
GC前の領域長 -> GC後の領域長 (領域サイズ)
Tenured
Tenuredの種別。"Tenured"が出力されます。
tenured_info
Tenured情報。次の形式で出力されます。
GC前の領域長 -> GC後の領域長 (領域サイズ)
Metaspace_info
Metaspace領域のメモリー情報。次の形式で出力されます。
GC前のMetaspace領域の使用サイズK(GC前のMetaspace領域のcapacityサイズK, GC前のMetaspace領域のcommitサイズK)->GC後のMetaspace領域の使用サイズK(GC後のMetaspace領域のcapacityサイズK, GC後のMetaspace領域のcommitサイズK)
classspace_info
Compressed Class Spaceのメモリー情報。次の形式で出力されます。
GC前のCompressed Class Spaceの使用サイズK(GC前のCompressed Class SpaceのcapacityサイズK, GC前のCompressed Class SpaceのcommitサイズK)->GC後のCompressed Class Spaceの使用サイズK(GC後のCompressed Class SpaceのcapacityサイズK, GC後のCompressed Class SpaceのcommitサイズK)
圧縮オブジェクトポインター機能を使用していない場合、出力されません。
cause_info
GC要因内容。
-XX:-HitachiVerboseGCPrintCauseオプションが指定された場合、出力されません。
user_cpu
GCスレッドがユーザーモードで費やしたCPU時間。単位は秒です。
CPU時間取得に失敗した場合、[User: unknown]のように、"unknown"と表示されます。
-XX:-HitachiVerboseGCCpuTimeオプションが指定された場合、出力されません。
system_cpu
GCスレッドがカーネルモードで費やしたCPU時間。単位は秒です。
CPU時間取得に失敗した場合、[Sys: unknown]のように、"unknown"と表示されます。
-XX:-HitachiVerboseGCCpuTimeオプションが指定された場合、出力されません。
jvm_alloc_size
JavaVM内部で管理している領域のうち、現在使用中の領域のサイズ(mmap_total_sizeとmalloc_total_sizeの合計サイズのうち、現在使用中の領域のサイズ)。
-XX:-HitachiVerboseGCPrintJVMInternalMemoryオプションが指定された場合、出力されません。
mmap_total_size
JavaVM内部で管理している領域のうち、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オプションが指定された場合、出力されません。
cc_used_size
GC発生時のコードキャッシュ領域の使用サイズ。単位はキロバイトです。
-XX:-PrintCodeCacheInfoオプションが指定された場合、出力されません。
cc_max_size
コードキャッシュ領域の最大サイズ。単位はキロバイトです。
-XX:-PrintCodeCacheInfoオプションが指定された場合、出力されません。
cc_info
保守情報。
-XX:-PrintCodeCacheInfoオプションが指定された場合、出力されません。
- 出力形式(G1GCの場合)
-
JavaVMログファイルには、GCに関するログとConcurrent Markingに関するログが出力されます。Concurrent Markingは、アプリケーションと並行で処理を実行するため、1回のConcurrent Markingに関するログは複数行に分かれて出力されます。
- GCに関するログの出力形式
-
[id]<date>[gc_kind gc_info, gc_time secs][Status:gc_status] [G1GC::Eden: eden_info][G1GC::Survivor: survivor_info] [G1GC::Tenured: tenured_info][G1GC::Humongous: humongous_info] [G1GC::Free: free_info][Metaspace: Metaspace_info] [class space: class_space_info][cause:cause_info][RegionSize: region_sizeK] [Target: target_time secs][Predicted: predicted_time secs] [TargetTenured: target_sizeK][Reclaimable: reclaimable_info] [User: user_cpu secs][Sys: system_cpu secs] [IM: jvm_alloc_sizeK, mmap_total_sizeK, malloc_total_sizeK][TC: thread_count] [DOE: doe_alloc_sizeK, called_count][CCI: cc_used_sizeK, cc_max_sizeK, cc_infoK]
- Concurrent Markingに関するログの出力形式
-
[id]<date>[cm_event][User: user_cpu secs][Sys: sys_cpu secs]
出力内容を次に説明します。
分類
出力項目
出力内容
GCに関するログ
id
VG1(JavaVMログファイル識別子)。
date
GCまたはConcurrent Markingの 開始日時。
-XX:-HitachiVerboseGCPrintDateオプションが指定された場合、出力されません。
gc_kind
GCまたはConcurrent Markingの種別。"FullGC"、"Mixed GC"、"Young GC"、"Young GC(initial-mark)"、"CM Remark"、"CM Cleanup"が出力されます。
gc_info
Java ヒープ領域のメモリー情報 。次の形式で出力されます。単位はキロバイトです。
GC前のJavaヒープ領域の使用サイズK/GC前のJavaヒープ領域の使用サイズ※K(GC前のJavaヒープ領域の領域サイズ※K)->GC後のJavaヒープ領域の使用サイズK/GC後のJavaヒープ領域の使用サイズ※K(GC後のJavaヒープ領域の領域サイズ※K)
gc_time
GCによるアプリケーション停止時間 。単位は秒です。
gc_status
GCの状態。
-
To 空間あふれが発生した場合、"to exhausted"が出力されます。
-
上記以外の場合、"-"が出力されます。
GCの種別ごとに、出力されるGCの状態を次に示します。
-
gc_kindが"Young GC"、"Young GC(initial-mark)"または"Mixed GC"の場合
"-"または"to exhausted"が出力されます。
-
gc_kindが上記以外の場合
"-"が出力されます。
eden_info
Eden 領域のメモリー情報。 次の形式で出力されます。単位はキロバイトです。
GC前のEden領域の使用サイズ※K(GC前のEden領域が取得できる最大の領域サイズ※K)->GC後のEden領域の使用サイズ※K(GC後のEden領域が取得できる最大の領域サイズ※K)
Eden領域が取得できる最大の領域サイズは、「New領域の領域サイズ-Survivor領域の使用サイズ」を指します。
survivor_info
Survivor領域のメモリー情報。次の形式で出力されます。単位はキロバイトです。
GC前のSurvivor領域の使用サイズ※K->GC後のSurvivor領域の使用サイズ※K
tenured_info
Tenured領域のメモリー情報。次の形式で出力されます。単位はキロバイトです。
GC前のTenured領域の使用サイズ※K->GC後のTenured領域の使用サイズ※K
humongous_info
Humongous領域のメモリー情報。次の形式で出力されます。単位はキロバイトです。
GC前のHumongous領域の使用サイズ※K->GC後のHumongous領域の使用サイズ※K
free_info
Free領域のメモリー情報。次の形式で出力されます。単位はキロバイトです。
GC前のFree領域の使用サイズ※K->GC後のFree領域の使用サイズ※K
Metaspace_info
Metaspace領域のメモリー情報。次の形式で出力されます。単位はキロバイトです。
GC前のMetaspace領域の使用サイズK(GC前のMetaspace領域のcapacityサイズK, GC前のMetaspace領域のcommitサイズK)->GC後のMetaspace領域の使用サイズK(GC後のMetaspace領域のcapacityサイズK, GC後のMetaspace領域のcommitサイズK)
classspace_info
Compressed Class Spaceのメモリー情報。次の形式で出力されます。単位はキロバイトです。
GC前のCompressed Class Spaceの使用サイズK(GC前のCompressed Class SpaceのcapacityサイズK, GC前のCompressed Class SpaceのcommitサイズK)->GC後のCompressed Class Spaceの使用サイズK(GC後のCompressed Class SpaceのcapacityサイズK, GC後のCompressed Class SpaceのcommitサイズK)
圧縮オブジェクトポインター機能を使用していない場合、出力されません。
cause_info
GC要因内容。
-XX:-HitachiVerboseGCPrintCauseオプションが指定された場合、出力されません。
region_size
1リージョンのサイズ。単位はキロバイトです。
target_time
GCによるアプリケーション停止時間の目標時間。単位は秒です。
目標時間は、-XX:+MaxGCPauseMillisオプションで指定できます。
predicted_time
JavaVMが予測したGCによるアプリケーション停止時間。単位は秒です。
GCまたはConcurrent Markingの種別が"Full GC"、"CM Remark"または"CM Cleanup"の場合、JavaVMは予測しないため、0が出力されます。
target_size
Mixed GCでGC対象となったTenured領域のサイズ。単位はキロバイトです。
GCまたはConcurrent Markingの種別が"Mixed GC"以外の場合、0が出力されます。
reclaimable_info
予測回収サイズ情報。次の形式で出力されます。
予測回収サイズK(予測回収率%)
予測回収サイズの単位はキロバイトです。予測回収率は小数点以下第2位までが出力されます。
なお、予測回収サイズ情報は、Concurrent Marking終了直後のYoung GCまたはMixed GCの場合に出力されます。ほかの場合、JavaVMは予測しないため、0が出力されます。
user_cpu
すべてのGCスレッドがユーザーモードで費やしたCPU時間の合計。単位は秒です。
CPU時間取得に失敗した場合、[User: unknown]のように、"unknown"と表示されます。
-XX:-HitachiVerboseGCCpuTimeオプションが指定された場合、出力されません。
system_cpu
すべてのGCスレッドがカーネルモードで費やしたCPU時間の合計。単位は秒です。
CPU時間取得に失敗した場合、[Sys: unknown]のように、"unknown"と表示されます。
-XX:-HitachiVerboseGCCpuTimeオプションが指定された場合、出力されません。
jvm_alloc_size
JavaVM内部で管理している領域のうち、現在使用中の領域のサイズ(mmap_total_sizeとmalloc_total_sizeの合計サイズのうち、現在使用中の領域のサイズ)。
-XX:-HitachiVerboseGCPrintJVMInternalMemoryオプションが指定された場合、出力されません。
mmap_total_size
JavaVM内部で管理している領域のうち、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オプションが指定された場合、出力されません。
cc_used_size
GC発生時のコードキャッシュ領域の使用サイズ。単位はキロバイトです。
-XX:-PrintCodeCacheInfoオプションが指定された場合、出力されません。
cc_max_size
コードキャッシュ領域の最大サイズ。単位はキロバイトです。
-XX:-PrintCodeCacheInfoオプションが指定された場合、出力されません。
cc_info
保守情報。
-XX:-PrintCodeCacheInfoオプションが指定された場合、出力されません。
Concurrent Markingに関するログ
id
VCM(JavaVMログファイル識別子)。
date
Concurrent Marking開始日時。
-XX:-HitachiVerboseGCPrintDateオプションが指定された場合、出力されません。
cm_event
Concurrent Markingの状態。
-
Concurrent Root Region Scan Start
Concurrent Root Region Scanが開始されました。
-
Concurrent Root Region Scan End
Concurrent Root Region Scanが終了しました。
-
Concurrent Mark Start
Concurrent Markが開始されました。
-
Concurrent Mark End
Concurrent Markが終了しました。
-
Concurrent Mark Stop
Concurrent Markを中止しました。
-
Concurrent Cleanup Start
Concurrent Cleanupが開始されました。
-
Concurrent Cleanup End
Concurrent Cleanupが終了しました。
user_cpu
すべてのGCスレッドがユーザーモードで費やしたCPU時間の合計。単位は秒です。
CPU時間取得に失敗した場合、[User: unknown]のように、"unknown"と表示されます。
-XX:-HitachiVerboseGCCpuTimeオプションが指定された場合、出力されません。
Concurrent Markingの状態が"Concurrent Mark Start"の場合、0が出力されます。
sys_cpu
すべてのGCスレッドがカーネルモードで費やしたCPU時間の合計。単位は秒です。
CPU時間取得に失敗した場合、[Sys: unknown]のように、"unknown"と表示されます。
-XX:-HitachiVerboseGCCpuTimeオプションが指定された場合、出力されません。
Concurrent Markingの状態が"Concurrent Mark Start"の場合、0が出力されます。
- 注※
-
サイズは、 領域のサイズを1リージョンのサイズで切り上げ、1リージョンのサイズの倍数で表した値となります。
cause_infoに出力されるGC要因内容を次に示します。
要因番号 |
要因内容 |
説明 |
GCの種類 |
|
---|---|---|---|---|
G1GC以外 |
G1GC |
|||
0 |
ObjAllocFail |
オブジェクトの領域確保失敗によってGCが発生しました。 |
○ |
○ |
1 |
System.gc |
java.lang.System.gcメソッド呼び出しによってGCが発生しました。 |
○ |
○ |
3 |
DelayedGC |
JNIやJVMTIによって保留されていたGCが起動されました。 |
○ |
○ |
4 |
JavaGCCommand |
javagcコマンドによってGCが発生しました。 |
○ |
○ |
6 |
JHeapProfCommand |
jheapprofコマンドによってGCが発生しました。 |
○ |
× |
8 |
EMReclaimFail |
Explicitメモリーの明示解放によるJavaヒープへのオブジェクト移動が発生してJavaヒープがあふれました。 |
○ |
× |
9 |
EMMigrateFail |
Explicitメモリーの自動解放によるJavaヒープへのオブジェクト移動が発生してJavaヒープがあふれました。 |
○ |
× |
10 |
JVMTIForceGC |
JVMTI関数ForceGarbageCollection()によってGCが発生しました。 |
○ |
○ |
11 |
PromotionFail |
CopyGCの昇格失敗によってGCが発生しました。 |
○ |
× |
12 |
EMJavaGCCommand |
javagcコマンドによるExplicitメモリーブロックの解放によってGCが発生しました。 |
○ |
○ |
13 |
EHeapProfCommand |
eheapprofコマンドによってGCが発生しました。 |
○ |
○ |
14 |
G1HumAllocFail |
G1GC 使用時、Humongous用の領域確保のために GC が発生しました。 |
× |
○ |
15 |
G1EvacuationPause |
G1GC 使用時にエバキュエーションが発生しました。 |
× |
○ |
16 |
Concurrent Marking |
GC は発生していないが、アプリケーションを停止して実行するConcurrent Marking 処理をログに出力しました。 |
× |
○ |
17 |
EvacuationFail |
G1GC 使用時にエバキュエーションの 失敗による GC が発生しました。 |
× |
○ |
18 |
MetaspaceAllocFail |
Metaspaceの領域確保失敗によってGCが発生しました。 |
○ |
○ |
19 |
LastMetaspaceGC |
MetaspaceのOutOfMemoryを出す前の最後のGCが発生しました。 |
○ |
○ |
- (凡例)
-
○:出力します。
×:出力しません。
書式
-XX:[+|-]HitachiVerboseGC
指定できる値
型:String
- -XX:+HitachiVerboseGC
-
GCが発生した場合、拡張verbosegc情報をJavaVMログファイルに出力します。
GCの内部領域であるEden、Survivor、Tenured、Metaspace種別の情報を拡張verbosegc情報として出力します。
- -XX:-HitachiVerboseGC
-
GCが発生した場合、拡張verbosegc情報をJavaVMログファイルに出力しません。
デフォルト値
- 定義項目の省略
-
-XX:-HitachiVerboseGC
出力例
- 出力例1
-
SerialGCの場合に-XX:HitachiVerboseGCIntervalTimeオプションが指定されているとき
[VGC]<Thu Oct 02 10:38:53.658 2014>(Skip Full:1,Copy:0) [Full GC 770K->682K(8064K), 0.0050003 secs][DefNew::Eden: 88K->0K(2304K)] [DefNew::Survivor: 0K->0K(256K)][Tenured: 681K->682K(5504K)] [Metaspace: 3634K(4492K, 4492K)->3634K(4492K, 4492K)] [class space: 356K(388K, 388K)->356K(388K, 388K)] [cause:System.gc][User: 0.0000000 secs][Sys: 0.0000000 secs] [IM: 11944K, 12448K, 0K][TC: 22][DOE: 0K, 0][CCI: 1173K, 245760K, 2496K]
- 出力例2
-
G1GCの場合
-
GCに関するログ
[VG1]<Thu Oct 02 10:38:56.193 2014> [Full GC 753K/2048K(8192K)->678K/1024K(8192K), 0.0097901 secs][Status:-] [G1GC::Eden: 1024K(2048K)->0K(2048K)][G1GC::Survivor: 0K->0K] [G1GC::Tenured: 1024K->1024K][G1GC::Humongous: 0K->0K] [G1GC::Free: 6144K->7168K] [Metaspace: 3634K(4492K, 4492K)->3634K(4492K, 4492K)] [class space: 356K(388K, 388K)->356K(388K, 388K)] [cause:System.gc] [RegionSize: 1024K][Target: 0.2000000 secs][Predicted: 0.0000000 secs] [TargetTenured: 0K][Reclaimable: 0K(0.00%)][User: 0.0000000 secs] [Sys: 0.0000000 secs][IM: 20459K, 21920K, 0K][TC: 35][DOE: 0K, 0] [CCI: 1172K, 245760K, 2496K]
-
Concurrent Markingに関するログ
[VCM]<Wed Jul 24 11:45:20 2013>[Concurrent Root Region Scan Start] [User: 0.0000000 secs][Sys: 0.0000000 secs] [VCM]<Wed Jul 24 11:45:20 2013>[Concurrent Root Region Scan End] [User: 0.0126134 secs][Sys: 0.0146961 secs] [VCM]<Wed Jul 24 11:45:20 2013>[Concurrent Mark Start][User: 0.0000000 secs] [Sys: 0.0000000 secs] [VCM]<Wed Jul 24 11:45:34 2013>[Concurrent Mark End][User: 0.0156250 secs] [Sys: 0.2495800 secs]
-