Interstage Application Server/Interstage Web Server チューニングガイド |
目次 索引 |
第7章 JDK/JREのチューニング | > 7.2 FJVM |
FJVMでは、“-verbose:gc”オプション指定時にガーベジコレクション(GC)処理の結果ログを出力する「ガーベジコレクション処理の結果ログ出力機能」の強化を行っています。
“-verbose:gc”オプションを指定してGC処理の結果ログを出力する際、図1のオプションを追加指定することにより、GC処理の結果ログとして出力される情報が、図2に示す形式に拡張されます。また、図3に出力例を示します。
-XX:+UseFJverbose |
$1: [$2, [$3 : $4->$5($6)], [$7 : $8->$9($10)] $11->$12($13), [$14 : $15->$16($17)], $18 secs] |
図2の各要素について、以下で説明します。
$1: 経過時間
GC処理の実行開始時間をJava VMが起動されてからの経過時間(秒)で示します。
$2: GC種別
実行したGC処理の種別を以下の名称で示します。
- GC
New世代領域を対象とするGC処理(NewGC処理またはマイナーGC処理)における結果情報です。- Full GC
Javaヒープ域全体(メモリ割り当てプール(New世代領域、Old世代領域)およびPermanent世代領域)を対象とするGC処理(FullGC処理)における結果情報です。- Full GC*
使用されているGC処理がシリアルGCまたはFJGCの場合で、かつ、直前に実行されたNewGC処理では十分な空き領域が確保できず、そのNewGC処理に続けて実行されたFullGC処理における結果情報です("Full GC"の後に"*"の付く表示になります)。
なおこの名称は“-verbose:gc”オプションだけを指定した場合には出力されません(単に"Full GC"として出力されます)。
$3: New世代領域の識別名
New世代領域の識別名を示します。
使用されているGC処理の違いにより、以下の識別名が出力されます。
- DefNew: シリアルGCの場合
- SplitEden: FJGCの場合
- PSYoungGen: パラレルGCの場合
$4: GC処理前のオブジェクト量(New世代領域)
GC処理実行前のNew世代領域に存在したオブジェクトの総量(バイト)です。
$5: GC処理後のオブジェクト量(New世代領域)
GC処理実行後のNew世代領域に存在するオブジェクトの総量(バイト)です。
$6: New世代領域の大きさ
New世代領域の大きさ(バイト)です。
注)使用されているGC処理がシリアルGCまたはパラレルGCの場合は、この大きさに「to space」領域の大きさが含まれません。
(シリアルGCまたはパラレルGCの場合、GC処理はNew世代領域を「eden space」、「from space」および「to space」の3つの内部領域に細分割して制御しています。)
$7: Old世代領域の識別名
Old世代領域の識別名を示します。
使用されているGC処理の違いにより、以下の識別名が出力されます。
- Tenured: シリアルGCの場合
- Tenured: FJGCの場合
- PSOldGen: パラレルGCの場合
$8: GC処理前のオブジェクト量(Old世代領域)
GC処理実行前のOld世代領域に存在したオブジェクトの総量(バイト)です。
$9: GC処理後のオブジェクト量(Old世代領域)
GC処理実行後のOld世代領域に存在するオブジェクトの総量(バイト)です。
$10: Old世代領域の大きさ
Old世代領域の大きさ(バイト)です。
$11: GC処理前のオブジェクト量(メモリ割り当てプール)
GC処理実行前のメモリ割り当てプールに存在したオブジェクトの総量(バイト)です。
$4+$8の値です。
$12: GC処理後のオブジェクト量(メモリ割り当てプール)
GC処理実行後のメモリ割り当てプールに存在するオブジェクトの総量(バイト)です。
$5+$9の値です。
$13: メモリ割り当てプールの大きさ
メモリ割り当てプールの大きさ(バイト)です。
$6+$10の値です。
注)使用されているGC処理がシリアルGCまたはパラレルGCの場合は、この大きさにNew世代領域の「to space」領域の大きさが含まれません。
(シリアルGCまたはパラレルGCの場合、GC処理はNew世代領域を「eden space」、「from space」および「to space」の3つの内部領域に細分割して制御しています。)
$14: Permanent世代領域の識別名
Permanent世代領域の識別名です。
使用されているGC処理の違いにより、以下の識別名が出力されます。
- Perm: シリアルGCの場合
- Perm: FJGCの場合
- PSPermGen: パラレルGCの場合
$15: GC処理前のオブジェクト量(Permanent世代領域)
GC処理実行前のPermanent世代領域に存在したオブジェクトの総量(バイト)です。
$16: GC処理後のオブジェクト量(Permanent世代領域)
GC処理実行後のPermanent世代領域に存在するオブジェクトの総量(バイト)です。
$17: Permanent世代領域の大きさ
Permanent世代領域の大きさ(バイト)です。
$18: GC処理実行時間
GC処理実行に要した時間(秒)です。
$2、$11、$12、$13、および$18に対する出力情報は、GC処理の結果ログ出力機能として“-verbose:gc”オプションだけを指定した際に出力される情報と対応します。
有効なGC処理
このオプション指定により出力形式が拡張されるのは、使用するGC処理が以下の場合です。
クラスのアンロード情報
Javaアプリケーションがクラスのアンローディング処理を行なっていた場合には、FullGC処理中に該当するクラスのアンロード情報"[Unloading ...]"が出力の途中に挿入される場合があります.
ログ出力量の増加
本オプションの指定により、ログ出力が増大します。
本オプションを指定する場合は、ログ出力量についての注意が必要です。
図3に、GC処理の結果ログとして出力される情報の拡張形式の出力例を示します。
1.495: [Full GC*, [SplitEden : 384K->0K(704K)], [Tenured : 47835K->32752K(47872K)] 48219K->32752K(48576K), [Perm : 4081K->4081K(16384K)], 0.6623532 secs] |
この出力情報から、以下のことが分かります。
目次 索引 |