JVM系统优化实践中,如何有效实施G1混合回收策略?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1126个文字,预计阅读时间需要5分钟。
您好,我是熊猫,这是我的51CTO博客,欢迎您常来。G1已取代了ParNew+CMS的组合,这能实现年轻代的垃圾回收,也能实现老年代垃圾回收。现在继续来说说它的混合回收。
您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~
G1替代了ParNew+CMS这对搭档组合,既能实现年轻代的垃圾回收,也能实现老年代的垃圾回收。现在继续来说说它的混合回收问题。
在JVM参数中,有一个设置项-XX:InitiatingHeapOccupancyPercent,它的默认值是45%,也就是-XX:InitiatingHeapOccupancyPercent=45。也就是说,如果老年代空间 ≥ JVM堆内存大小 × 45%,就会触发混合回收。
例如,当JVM有2048个Region,而老年代Region≈1000时,就触发混合回收。
G1的混合回收,也有这么几个步骤:
1、初始标记阶段:Stop the World,仅仅只是标记一下GC Roots直接能应用的对象。
2、并发标记阶段:恢复系统程序运行,同时进行GC Roots追踪所有的存活对象,比较耗时,同时将对象的做出的修改记录下来。
3、最终标记阶段:再次Stop the World,最终标记哪些是存活对象,哪些是垃圾对象。
4、混合回收阶段:先计算老年代中每个Region里面的存活对象数量,占比,GC的预期性能及效率。
本文共计1126个文字,预计阅读时间需要5分钟。
您好,我是熊猫,这是我的51CTO博客,欢迎您常来。G1已取代了ParNew+CMS的组合,这能实现年轻代的垃圾回收,也能实现老年代垃圾回收。现在继续来说说它的混合回收。
您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~
G1替代了ParNew+CMS这对搭档组合,既能实现年轻代的垃圾回收,也能实现老年代的垃圾回收。现在继续来说说它的混合回收问题。
在JVM参数中,有一个设置项-XX:InitiatingHeapOccupancyPercent,它的默认值是45%,也就是-XX:InitiatingHeapOccupancyPercent=45。也就是说,如果老年代空间 ≥ JVM堆内存大小 × 45%,就会触发混合回收。
例如,当JVM有2048个Region,而老年代Region≈1000时,就触发混合回收。
G1的混合回收,也有这么几个步骤:
1、初始标记阶段:Stop the World,仅仅只是标记一下GC Roots直接能应用的对象。
2、并发标记阶段:恢复系统程序运行,同时进行GC Roots追踪所有的存活对象,比较耗时,同时将对象的做出的修改记录下来。
3、最终标记阶段:再次Stop the World,最终标记哪些是存活对象,哪些是垃圾对象。
4、混合回收阶段:先计算老年代中每个Region里面的存活对象数量,占比,GC的预期性能及效率。

