7.15.11 FullGC
(1) 実行契機
Free領域がなくなり,Evacuationのコピー先が確保できなかった場合やHumongous領域が確保できなかった場合に実行されます。また,Metaspace領域の空き領域がなくなった場合やSystem.gc()が呼ばれた場合も実行されます。
(2) 対象範囲
New領域,Tenured領域,Humongous領域およびMetaspace領域
(3) 処理内容
-
FullGCはシングルスレッドでアプリケーションスレッドを停止して実行されます。
-
FullGCが発生すると目標停止時間に関係なく,GCが終了するまでアプリケーションを停止します。
-
FullGCの処理はSerialGCのFullGCと同じ処理です。FullGCを実行しても領域が確保できなかった場合は,OutOfMemoryが発生します。詳細については,「7.2 SerialGCの仕組み」を参照してください。
-
一般的に,YoungGCやMixedGCの方がFullGCに比べて短い時間で処理できます。
(4) 処理結果
Eden領域:オブジェクトが回収され,空になります。
Survivor領域:使用中のオブジェクトがTenured領域に移動し,空になります。
Tenured領域:使用中のオブジェクトが詰め直されます。
Humongous領域:使用中のオブジェクトが詰め直されます。
Metaspace領域:使用中のオブジェクトが詰め直されます。
Free領域:回収されたリージョンによって増加します。
(5) アプリケーションの停止の有無
停止します。
(6) ほかのGCとの関係
CM:FullGC中は実行されません。
YoungGC:FullGC中は実行されません。
MixedGC:FullGC中は実行されません。
(7) 補足
-
確認方法
FullGCの確認はログ上のGCの種別が“FullGC”であることから確認できます。また,FullGCではこれから実行するGCに対して予測をしないため,予測停止時間や予測回収サイズは0で表示されます。
[VG1]<Wed Jan 15 12:51:32 2014>[Full GC 130443K/131072K(131072K)->55462K/56320K(131072K), 2.3265610 secs][Status:-][G1GC::Eden: 0K(43008K)->0K(43008K)][G1GC::Survivor: 0K->0K][G1GC::Tenured: 131072K->56320K][G1GC::Humongous: 0K->0K][G1GC::Free: 0K->74752K][Metaspace: 3634K(4492K, 4492K)->3634K(4492K, 4492K)][class space: 356K(388K, 388K)->356K(388K, 388K)][cause:ObjAllocFail][RegionSize: 1024K][Target: 0.2000000 secs][Predicted: 0.0000000 secs][TargetTenured: 0K][Reclaimable: 0K(0.00%)][User: 2.1700000 secs][Sys: 0.0000000 secs][IM: 277185K, 261856K, 44544K][TC: 1168][DOE: 0K, 0][CCI: 5808K, 49152K, 5952K]