Java垃圾回收(GC)系列四 分代垃圾收集过程

本系列教程主要讲解Java垃圾回收机制,文章内容是翻译oracle官网的相关文档,有兴趣的同学可以查看官网英文版,具体地址:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

本章节内容主要介绍分代垃圾回收过程。

分代垃圾回收过程

现在你理解了为什么将堆划分为不同的代,现在是时候看看这些空间是如何相互作用的了。后面的图片将介绍JVM中对象分配和老化的过程。

1、首先,将任何对象分配到伊甸园空间。两个幸存者空间一开始都是空的。

 2、当伊甸园空间填满时,会触发敬畏的垃圾收集。

3、引用的对象被移动到第一个幸存者空间。清除伊甸园空间时,将删除未引用的对象。

4、在下一个minor GC中,伊甸园空间也会发生同样的事情。删除未引用的对象,并将引用的对象移动到幸存者空间。然而,在这种情况下,它们被移动到第二幸存者空间(S1)。此外,来自上一个幸存者空间(S0)上的最后一个minor GC的对象的年龄增加并且移动到S1。一旦所有幸存的对象都移动到S1,S0和伊甸园都会被清除。请注意,我们现在在幸存者空间中有不同的老化对象。

5、在下一个 minor GC中,重复同样的过程。然而这次幸存者空间切换。引用的对象被移动到S0。幸存的对象会老化。伊甸园的S1被清除。

6、此幻灯片演示了晋升。在minor GC后,当老化的对象大道一定的年龄阈值(在该实例中为8)时,它们从年轻代晋升到老年代。

7、随着minor GC继续发生,对象将继续被晋升到老年代。

8、所以这几乎涵盖了年轻代的整个过程。最终,将对老年代进行主要的GC,清理和压缩该空间。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值