JVM-垃圾收集器-回收过程

JDK1.8之前,JVM中堆空间可以分为新生代、老年代和永久代(1.8后永久代改为元空间,元空间不再使用堆而是使用本地内存)。
而新生代又分为一个Eden space 和两个survivor space。

1.首先,任何新对象都分配到 eden 空间。两个幸存者空间开始时都是空的。

在这里插入图片描述

2.当 eden 空间填满时,将触发一个Minor GC(年轻代的垃圾回收)

在这里插入图片描述

3.引用的对象将移动到第一个幸存者空间。清除 eden 空间时,将删除未引用的对象。

在这里插入图片描述

4.在下一个Minor GC中,eden空间也会发生同样的事情。未引用的对象将被删除,
引用的对象将移动到survivor空间。但是,在这种情况下,它们被移动到第二个
survivor空间(S1)。此外,来自第一个survivor空间(S0)上最后一个次要
GC的对象的年龄递增并移动到S1。一旦所有幸存的物体都被移动到S1,S0和eden
都会被清除。请注意,我们现在在survivor 空间中有不同年龄的对象。

在这里插入图片描述

5.在下一个Minor GC 中,将重复相同的过程。然而,这一次survivor 空间切换了。
引用的对象将移动到 S0。幸存的对象已过期(未引用)。eden和S1被清除。

在这里插入图片描述

6.重复前面的过程,在Minor GC 之后,当老化对象达到某个年龄阈值
(在本例中为 8)时,它们将从新生代提升到老年代中。

在这里插入图片描述

7.随着Minor GC的不断发生,对象将继续被提升到老年代空间。

在这里插入图片描述

8.因此,这几乎涵盖了新生代的整个过程。最终,将在老年代上进行Full GC,
以清理和压缩该空间。

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值