G1垃圾回收器学习2

8 篇文章 0 订阅

1.什么时候触发新生代与老年代的混合垃圾回收?
“-XX:InitiatingHeapOccupancyPercent”参数,默认为45%。当老年代的Region占了45%时,会触发新生代+老年代混合回收阶段。

2.回收过程
①初始标记——“Stop the World”
标记GC Roots(栈的局部变量、方法区的类静态变量)直接引用的对象。
②并发标记
进行追踪,从GC Roots开始追踪所有存活对象。并发标记阶段与系统程序并发运行,所以对程序影响不大。这个阶段还会记录对象的新建与失去引用。
③最终标记——“Stop the World”
最终标记阶段会根据并发标记的记录,最终标记哪些对象存活,哪些是垃圾。
④混合回收——“Stop the World”
这个阶段会根据我们预设的GC停顿时间,可能回收的Region有新生代+老年代+大对象一起回收,达到可控时间内回收最多垃圾的目的。
混合回收是基于复制算法,把存活对象移到另一个Region去,再消除这个Region对的垃圾对象。
“-XX:G1MixedGCLiveThresholdPercent参数,默认是85%,表示要回收的Region的存活对象要低于85%才回收。

3.G1垃圾回收器的一些参数
-XX:G1MixedGCCountTarget”
在混合回收的过程中,会停止所有程序运行,所以G1允许执行多次混合回收。
-XX:G1MixedGCCountTarget”参数,代表执行几次混合回收,默认值为8次
意思是先停止系统运行,混合回收一些Region,再恢复系统运行,再停止系统运行,混合回收一些Region;往返重复8次。

“-XX:G1HeapWastePercent”
混合回收时基于复制算法,在回收的过程中会不断空出新的Region来,一旦空闲出来的Region达到了堆内存的5%,就会停止混合回收。

4.回收失败的处理
如果在Mixed回收中,当没有空间的Region进行复制算法时,就会触发失败,立马停止系统程序,然后采用单线程进行标记、清理、整理,这个过程是极慢的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值