G1垃圾收集器
文章平均质量分 87
FightingITPanda
don't talk,show me the code
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
panda白话 - G1垃圾收集器 - Mixed GC - 并发标记阶段 - 源码分析
G1垃圾收集 - Mixed GC: 初始标记阶段 - Initial Mark 并发标记阶段 - Concurrent Mark 最终标记阶段 - Remark 清理阶段 - Clean Up 并发标记阶段 - Concurrent Mark 特性: 与Mutator并发进行 以初始标记的根出发进行深度扫描 根分区扫描步骤: scanRootRegions扫描所有survivor分区 scanRootRegion 逐个region进行扫描处理 [bootom, top]区间内所有的对象gra.原创 2021-12-15 15:15:29 · 1380 阅读 · 0 评论 -
panda白话 - G1垃圾收集器 - Mixed GC - 初始标记(根分区扫描)源码分析
G1垃圾收集 - Mixed GC: 初始标记阶段 - Initial Mark 并发标记阶段 - Concurrent Mark 最终标记阶段 - Remark 清理阶段 - Clean Up 初始标记阶段 - Initial Mark - 根标记 特性: STW 以Young GC后的survivor分区作为根进行扫描 扫描的是survivor 分区到老年代Region对象的引用 所以Mixed GC 一定发生在Young GC 之后 根分区扫描步骤: scanRootRegions扫描所.原创 2021-12-10 17:36:23 · 1400 阅读 · 0 评论 -
Panda白话 - G1垃圾收集器 - SATB、写屏障
Panda白话 - G1垃圾收集器 - 三色标记法、漏标、增量更新、SATB 上文讲到G1在并发标记过程中,通过三色标记法来标记存活对象, 三色标记法存在漏标问题,会影响程序正确性, G1采用SATB方案解决漏标问题,本文我们就来重点分析一下SATB SATB - Snapshot At The Beginning 初始快照 由Taiichi Yuasa开发的一个算法 - 首先它是一种思想 主要用于GC的并发标记阶段 记录并发标记是mutator修改的引用记录,remark阶段(STW)无需全量重新扫.原创 2021-12-10 15:10:43 · 2592 阅读 · 0 评论 -
Panda白话 - G1垃圾收集器 之 Refine线程
Refine线程: G1引入的并发线程池 线程数 = G1ConcRefinementThreads+1 (默认) Refine线程的功能: 处理新生代分区的抽样 - 更新YHR(Young Heap Region)的数目 管理RSet 处理新生代分区的抽样: 功能: 设置YHR - 新生代分区的个数,使G1满足GC的预测停顿时间-XX:MaxGCPauseMillis 抽样方法 - 关键源码:concurrentG1RefineThread.cpp void ConcurrentG1Refi.原创 2021-11-23 18:58:34 · 1527 阅读 · 1 评论 -
Panda白话 - G1垃圾收集器
are you ready~~ 知识点太多,肝一篇长文~,let us go ~~ G1 - Garbage First 垃圾收集器 What is G1: 见名思议,garbage first,垃圾优先,先回收垃圾多的region,region你还不知道是啥,往下看原创 2021-11-15 21:28:44 · 1855 阅读 · 1 评论 -
Panda 白话 - G1垃圾收集器 之 RSet(Remembed Set)源码解读
G1的知识点越看越多,这个RSet和卡表老也整不明白,单拎出来白话一下吧~ 我们已经知道G1将堆内存划分为2048个(默认、可调整)大小相等的Region,新创建的对象都是放在新生代Eden区。 Region分为5中类型: YHR - Yound Heap Reagion :年轻代分区 ERH - Eden Heap Region : eden区,伊甸园,放新创建对象 SRH - Survivor Heap Region : Survivor 区,存货去,放每次GC后存活对象 OHR - Old.原创 2021-11-19 18:12:30 · 2730 阅读 · 6 评论 -
Panda白话 - G1垃圾收集器 - 三色标记法、漏标、增量更新、SATB
三色标记法: GC HandBook把对象分成三种颜色: 黑色(Black) - 根对象,自身及可达对象都已经被标记 灰色 (Grey) - 自身已经被标记,可达对象还未被标记 白色 (White) - 还未被标记、垃圾对象 举个栗子吧: A.b = new B(); B.c = new C(); C.d = new D(); 如上图、有这么个引用关系: A对象有个field(成员变量)b,引用了B对象(存储B对象的物理地址),field c没有引用 B对象有个field(成员变量)c,引用了C原创 2021-12-09 17:42:26 · 1773 阅读 · 0 评论
分享