-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 モードもあります。