深入Garbage First垃圾收集器(三)G1中的垃圾收集

时间:2020-12-23 05:25:17

G1 GC在收集暂停的过程中会回收绝大部分堆分区,唯一的例外是多级并发标记期间的清除阶段。

在清除阶段,如果G1遇到仅仅只存放了垃圾的分区,它就会立刻收集这些分区并将它们放回空闲分区列表中,因此这些分区的释放工作就不用等到下一次垃圾收集暂停时再做了。

G1的垃圾收集周期有3种类型:年轻代收集周期多级并发标记周期混合收集周期

另外还有一种单线程的回退暂停full GC,它是在垃圾收集遇到转移失败情况下所采取的安全保护机制。

转移失败

在一次年轻代收集的过程中,G1会暂停应用线程,并将存活对象从年轻代eden分区移到survivor分区,或将它们提升到老年代分区,也有可能二者同时发生。

对于混合GC,G1同时还会将存活对象转移到一个或者多个空闲分区中,然后这些分区就成为了老年代的一部分。

GC效率