Hitachi

Cosminexus V11 アプリケーションサーバ システム設計ガイド


7.15.8 YoungGC

図7‒28 YoungGCの流れ

[図データ]

〈この項の構成〉

(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領域が拡張されたことが分かります。ログの記述内容や詳細に関しては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「-XX:[+|-]HitachiVerboseGC(拡張verbosegc情報出力オプション)」を参照してください。