您的位置:首页 > 其它

G1的垃圾回收概念

2017-09-15 15:52 141 查看
通过市场的力量,不断淘汰旧的行业,把有限的资源让给那些竞争力更强、利润率更高的企业。类似地,硅谷也在不断淘汰过时的人员,从全世界吸收新鲜血液。经过半个多世纪的发展,在硅谷地区便形成只有卓越才能生存的文化。本着这样的理念,GC承担了淘汰垃圾、保存优良资产的任务。

G1 GC在回收暂停阶段会回收最大量的堆内区间(Region),这是它的设计目标,通过回收区间达到回收垃圾的目的。这里只有一个例外情况,这个例外发生在并行标记阶段的清除(Cleanup)步骤,如果G1 GC在清除步骤发现所有的区间都是由可回收垃圾组成的,那么它会立即回收这些区间,并且将这些区间插入到一个基于LinkedList实现的空闲区间队列里,以待后用。因此,释放这些区间并不需要等待下一个垃圾回收中断,它是实时执行的,即清除阶段起到了最后一道把控作用。这是G1 GC和之前的几代GC的一大差别。

G1 GC的垃圾回收循环由三个主要类型组成:年轻代循环[1]、多步骤并行标记循环[2]、混合收集循环[3]。当然,单线程、独占式、高强度的Full GC还是继续存在的,它针对GC的评估失败[4]提供了一种失败保护机制,即强力回收。

在年轻代回收期,G1 GC暂停应用程序线程,然后从年轻代区间移动存活对象到幸存者区间或者老年区间,也有可能是两个区间都会涉及。对于一个混合回收期,G1 GC从老年区间移动存活对象到空闲区间,这些空闲区间也就成为了老年代的一部分。
 

[1] 即Young Collection Cycle。
[2] 即Multistage Concurrent Marking Cycle。
[3] 即Mixed Collection Cycle。
[4] 即Evacuaion failure。


欢迎关注麦克叔叔每晚十点说,有兴趣的朋友可以关注公众号,我们一起交流、一起学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: