一步一图带你理清G1垃圾回收流程

G1垃圾回收流程

图片
G1的垃圾回收流程主要是从新生代回收开始,新生代回收与并发标记再到混合回收,接下来我们就先来说第一个新生代回收。

G1 Yong Collection
当我们的程序启动刚开始的时候会默认分配新生代5%的空间,这里我们假设分配了8个Region给Eden,1个Region给Survior(只是为了画图方便,实际可能Eden对应了有好几十甚至上百个Region),那么对应的初始内存分配如下:

图片
那么当我们的Eden区域装满,还是会触发新生代的GC,那么新生代的GC还是会通过复制算法来进行垃圾回收,同时系统进入“Stop the World”状态,然后把Eden区中的对应的Region里存活的对象拷贝到S1对应的Region中,接着回收掉Eden对应的Region中的垃圾对象。

图片
那么新生代对象什么时候进入老年代呢?跟之前一样,还是这么几个条件:1)对象在新生代躲过了多次的垃圾回收,达到了一定的年龄,就会进入老年代。可以通过参数“-XX:MaxTenuringThreshold”进行年龄的设置

2)动态年龄规则判断,如果一旦发现某个新生代GC过后,同年龄的存活对象超过了Survior的50%,比如此时有1岁的,2岁的,3岁的,5岁的,发现3岁的对象大小总和已经超过了Survior的50%。那么3岁及以上的对象都会全部进入老年代

所以经过一段时间新生代的使用和垃圾回收后,总有一些对象会进入老年代,如下图:

图片
此时大家可能会疑惑?之前不是说我们有大对象根据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习一直在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值