jvm-G1回收器回收过程

本文详细介绍了G1垃圾回收器的工作流程,包括何时触发新生代+老年代的混合回收,以及G1的各个阶段:初始标记、并发标记、最终标记和混合回收。此外,还探讨了G1的参数设置,如`-XX:InitiatingHeapOccupancyPercent`、`-XX:G1MixedGCCountTarget`、`-XX:G1HeapWastePercent`和`-XX:G1MixedGCLiveThresholdPercent`,以及在回收失败时如何进行Full GC。
摘要由CSDN通过智能技术生成

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

​ G1有一个参数,是“-XX:InitiatingHeapOccupancyPercent”,他的默认值是45%,如果老年代占据了堆内存的45%的Region的时候,此时就会尝试触发一个新生代+老年代一起回收的混合回收阶段

G1垃圾回收的过程

1、首先会触发一个“初始标记”的操作,这个过程是需要进入“Stop the World”的,仅仅只是标记一下GC Roots直接能引用的对象,这个过程速度是很快的。先停止系统程序的运行,然后对各个线程栈内存中的局部变量代表的GC Roots,以及方法区中的类静态变量代表的GC Roots,进行扫描,标记出来他们直接引用的那些对象;

2、接着会进入“并发标记”的阶段,这个阶段会允许系统程序的运行,同时进行GC Roots追踪,从GC Roots开始追踪所有的存活对象。这个并发标记阶段还是很耗时的,因为要追踪全部的存活对象。但是这个阶段是可以跟系统程序并发运行的,所以对系统程序的影响不太大。而且JVM会对并发标记阶段对对象做出的一些修改记录起来,比如说哪个对象被新建了,哪个对象失去了引用;

3、接着是下一个阶段,最终标记阶段,这个阶段会进入“Stop the World”,系统程序是禁止运行的,但是会根据并发标记 阶段记录的那些对象修改,最终标记一下有哪些存活对象,有哪些是垃圾对象;

4、最后一个阶段,就是混合回收阶段,这个阶段会计算老年代中每个Regi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值