Minor GC、Major GC和Full GC之間的區別

概念:

     新生代 GC(Minor GC):指發生在新生代的垃圾收集動作,因爲 Java 對象大多都具
    備朝生夕滅的特性,所以 Minor GC 非常頻繁,一般回收速度也比較快。

     老年代 GC(Major GC  / Full GC):指發生在老年代的 GC,出現了 Major GC,經常
    會伴隨至少一次的 Minor GC(但非絕對的,在 ParallelScavenge 收集器的收集策略裏
    就有直接進行 Major GC 的策略選擇過程) 。MajorGC 的速度一般會比 Minor GC 慢 10
    倍以上。

Minor GC觸發機制:
當年輕代滿時就會觸發Minor GC,這裏的年輕代滿指的是Eden代滿,Survivor滿不會引發GC
Full GC觸發機制:

當年老代滿時會引發Full GC,Full GC將會同時回收年輕代、年老代,

當永久代滿時也會引發Full GC,會導致Class、Method元信息的卸載

其中Minor GC如下圖所示


虛擬機給每個對象定義了一個對象年齡(Age)計數器。如果對象在 Eden 出生並經過第一次 Minor GC 後仍然存活,並且能被 Survivor 容納的話,將被移動到 Survivor 空間中,並將對象年齡設爲 1。對象在 Survivor 區中每熬過一次 Minor GC,年齡就增加 1 歲,當它的年齡增加到一定程度(默認爲 15 歲)時,就會被晉升到老年代中。對象晉升老年代的年齡閾值,可以通過參數 -XX:MaxTenuringThreshold (閾值)來設置。
 

 

 

  • Major GC 是清理老年代。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章