g1的小结

g1比cms快的原因总结:
1.ygc的时候
g1有一个rset的结构,记录了哪个region引用我这个区域,这样ygc的时候就不需要扫描整个老年代(cms的时候其实也是扫描了老年代的card table),ygc时g1的扫描rset对比cms的扫描年老代的card table, g1胜

2.cms收集中remark重新标记阶段占据了80%的stw时间,原因是这个重新标识阶段cms要扫描所有的root 对象,包括所有新生代区域的对象都属于root对象,而g1有一个satb结构,在该阶段中,只需要扫描这个结构中的对象即可(这个对象中队列的内容是通过write barrier维护的),所以g1胜

3.g1的全局并发标记的触发时机是堆内存占用超过了ihop的大小,一个全局并发标记周期之后跟随着数次mixed gc(最多的mixed gc次数由参数控制),这些mixed gc的目的是为了将堆内存占用降低到ihop之下

4.如果发生疏散失败,可以降低ihop参数,提前触发mixed gc,或者可以加大XX:G1ReservePercent的值,构造假的天花板,预留更多的空闲空间用于放置晋升或者复制转移的对象

5.如果发现大多数对象的对象年龄很小,那么可以加大survivor所占据的比例,让对象在survivor中被回收掉

6.如果两次mixed gc的之间的间隔太短,表明全局并发标记期间对象晋升到老年代过快,这里可以通过调整g1NewSizePercent比例,不要让这个比例太低,正常设置成ygc后年轻带所占的堆内存比例大小即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值