031、jvm实战总结:动手实验:线上系统部署如果采用G1垃圾回收器,应该如何设置参数?

 1、前文回顾

1、G1中有新 、老、大三种Region 

2、新生代回收条件:新生代Eden区满的时候 

3、新生代GC仍然采用复制算法 

4、控制停顿时间,对Region进行挑选回收 

5、进入老年的条件:

(1)熬过了一定次数的GC

(2)动态年龄判定规则

(3)存活对象在Survivor放不下

比先前的垃圾收集器少了:大对象直接进入老年代,G1中的大对象不占用老年代的份额。但大对象确实又占了堆,即极端情况下,老年代或新生代的最大值是达不到的。

2、什么时候触发新生代+老年代的混合垃圾回收?

-XX:InitiatingHeapOccupancyPercent,默认值是45%,表示如果老年代占据了堆内存的45%的Region的时候,触发混合回收

??问题:默认老年代占40%,而混合回收的条件是‘老年代占堆的45%’,也就是说默认情况下永远不会触发混合回收?

答:没说老年代默认是40%,新生代不足60%的时候,老年代会到达45%的。DS:默认设置下,老年代并不是1-60%=40%,而应该是堆内存的40%到95%(1-5%=95%),5%是新生代默认初始占比,60%是新生代默认最大占比

3、G1垃圾回收的过程

老年代:

    初始标记 - STW,标记一下GC  Roots直接能引用的对象,很快

    并发标记 - 和应用并行,进行GC Roots追踪存活对象,并记录新建和失去引用对象

    最终标记 - STW,根据并发标记阶段的结果,最终标记垃圾对象

混合回收

    1、预估:这个阶段计算老年代中每个Region中的存活对象数量,存活对象的占比,垃圾回收的预期性能和效率

    2、STW回收:选择性价比最高的Region进行回收,这个阶段会为了降低对应用的影响, 将回收操作默认分成了8次(-XX:G1MixedGCCountTarget控制),即MaxGCPauseMills时间 = 8次回收时间之和

    3、细分8次,5%停止:默认情况下,有可能回收次数不会达到8次,因为回收过程中,回收的Region数量到达了堆空间的5%(-XX:G1HeapWastePercent控制)就会停止回收。意思是:回收空间应该够用了,停下来让应用程序去执行吧。    

 

? ? 文中没有提到什么时候进行老年代单独GC,是不是可以认为和CMS一样,每次MajorGC都会伴随着一次MinorGC,在G1里就是MixedGC?

答:对的,可以这么认为。

??文中提到混合回收阶段,会对老年代进行计算和评估,那么什么时候对新生代空间中对象和大对象Region的计算和评估?

答:就在混合回收阶段的过程中,几次标记之后就会计算

4、G1垃圾回收器的一些参数

-XX:G1MixedGCLiveThresholdPercent 必须是存活对象低于85%的Region才可以进行回收,回收存活大于85%的复制成本很高。

5、回收失败时的Full GC

新/老代进行回收采用的都是复制算法,如果空闲的Region不够用,则STW,然后采用单线程进行标记、清理和压缩整理,速度极其慢

??回收失败时进行FullGC ,此时回收时间受MaxGCPauseMills次数约束么,什么时候会结束?

答:不受影响,务必回收完毕再说

6、本文总结

触发MixedGC条件:老年代占堆的45%;

G1的GC过程:

    老年代GC:

        初始标记STW,并发标记,最终标记

    MixedGC:

        预估;细分8次STW回收;回收到堆的5%停止

本文是《从 0 开始带你成为JVM实战高手》内容总结,版权问题,特此声明。详细内容:

 

 

 

 

如果购买,成功后加QQ群找群主返现10元

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

java硕哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值