JVM G1源码分析和调优书 阅读笔记 第7章 Full GC

本文详细介绍了JVM G1垃圾收集器在对象分配失败后的处理流程,特别是Full GC的过程。从Evac失败、FGC的串行和并行实现、对象的移动与地址更新,到后处理阶段的堆空间调整和RSet重构等关键步骤,深入剖析了G1的内部工作机制和优化策略。
摘要由CSDN通过智能技术生成

对象分配失败,就会进入到Evac失败过程,在GC日志详情中会打印相关信息

1.处理失败

2.再次尝试分配,仍然不成功,进行Full GC

7.1 Evac失败

   把对象放入到Evac失败栈;直接更新对象的RSet,不需要对已复制的对象做额外回收之类的处理

检查是否有指向自己的指针,如果有,就代表发生了复制失败。需要删除指针,恢复对象头

  1. 把这个分配失败的对象,放入到特殊的dirty card队列中

  2.执行Redirty重构整个RSet,确保引用的正确性

  7.2  FGC 

         JDK10之前,FGC都是串行回收;需要停止并发标记,停止增量回收

         串行回收采用标记清除算法

         

7.2.2 计算对象的新地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值