Java 2 SDK 開発ガイド (Solaris 編)

-verbosegc の出力の説明

ガベージコレクションの問題の解決

-verbosegc オプションを使用して、アプリケーションによって新しい空間だけ、または新しい空間と古い空間の両方 (完全) のどちらのガベージコレクションが行われたかを調べることができます。このオプションは次のように使用します。


% java -verbosegc

この入力を行うと、次のような出力が生成されます。


GC[1] in 305 ms: (6144kb, 6% free) -> (14Mb, 61% free)

この例の GC[1] は、完全なガベージコレクションが行われたことを示します。GC[1] であれば、新しい空間だけのガベージコレクションになります。この例では、回収に 305ms の時間がかかっています。回収の開始時のヒープサイズは 6144K バイトで、未使用領域は 6% でした。回収中にヒープは大きくなり、回収の終了時のヒープサイズは 14M バイトで、未使用領域は 61% になっています。

世代別ヒープサイズ

ヒープは、新しい世代と古い世代に分類されます。それぞれの世代のサイズを調べるには、次のコマンドを使用します。


% java -verbosegc -verbosegc

出力例

次に、-verbosegc -verbosegc の出力例を検討します。


Gen0(semi-spaces): size=4096kb, free=0kb, maxAlloc=0kb
  From space: size=524288 words, used=524286 words, free=2
  To space:   size=524288 words, used=1 words, free=524287
Gen0(semi-spaces)-GC #4 tenure-thresh=0 61ms 0%->28% free
Gen0(semi-spaces): size=4096kb, free=571kb, maxAlloc=571kb
  From space: size=524288 words, used=378157 words, free=146131
  To space:   size=524288 words, used=1 words, free=524287
Gen1(mark-compact): size=4096kb, free=0kb, maxAlloc=0kb
Gen1(mark-compact)-GC #1 Gen1: 850kb dense
 262ms 0%->2% free
Gen1(mark-compact): size=4096kb, free=80kb, maxAlloc=80kb

この出力からは、それぞれの世代について以下の情報を得ることができます。

Gen0 は、ガベージコレクタをコピーする、4096K バイトから始まる semi-space です。この新しい空間のガベージコレクション以前には、未使用メモリのサイズは 0K バイトでした。ガベージコレクション以後には、378157 ワード分が未使用になっています (28%)。Gen1 は mark-compact のガベージコレクタです。回収中に 2% が解放されています。

詳しい情報が得られる、-verbosegc -verbosegc -verbosegc モードもあります。