7.15.8 YoungGC

図7-28 YoungGCの流れ

[図データ]

<この項の構成>
(1) 実行契機
(2) 対象範囲
(3) 処理内容
(4) 処理結果
(5) アプリケーションの停止の有無
(6) ほかのGCとの関係
(7) 補足

(1) 実行契機

  1. YoungGC(normal)
    Eden領域にオブジェクトを確保できなかった場合に発生します。また,サイズの大きなオブジェクトをHumongous領域に確保できなかった場合にも発生します。
  2. YoungGC(initial-mark)
    直前に実行されたYoungGC(normal)終了時に,Tenured領域の使用サイズがJavaヒープ領域の45%を超えていた場合,1.の実行契機を満たすとYoungGC(initial-mark)が実行されます。また,サイズの大きなオブジェクトを確保時,Tenured領域の使用サイズとオブジェクトの確保サイズの合計サイズがJavaヒープ領域の45%を超えた場合,YoungGC(initial-mark)が実行されます。

(2) 対象範囲

New領域

(3) 処理内容

(4) 処理結果

Eden領域:オブジェクトが回収され,空になります。GC後リサイズされます。

Survivor領域:From空間のオブジェクトが回収され,空になります。GC後リサイズされます。

Tenured領域:長期間必要と判断されたオブジェクトがTenured領域に移動します。

Humongous領域:変化はありません。

Metaspace領域:変化はありません。

Free領域:GC後のリサイズによって,増減します。

(5) アプリケーションの停止の有無

停止します。

(6) ほかのGCとの関係

CM:YoungGC中に実行されません。

MixedGC:YoungGC中に実行されません。

FullGC:YoungGC中に実行要件を満たすと,YoungGCを中止して実行されます。

(7) 補足

上記のログの場合GC前のNew領域のサイズは389120K+41984K=431104Kであり,GC後のNew領域のサイズは397312K+41984K=439296Kであるため,New領域が拡張されたことが分かります。ログの記述内容や詳細に関しては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「16.2 -XX:[+|-]HitachiVerboseGC(拡張verbosegc情報出力オプション)」を参照してください。