![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
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 · 863 阅读 · 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 · 1052 阅读 · 0 评论 -
Panda白话 - G1垃圾收集器 - SATB、写屏障
Panda白话 - G1垃圾收集器 - 三色标记法、漏标、增量更新、SATB上文讲到G1在并发标记过程中,通过三色标记法来标记存活对象, 三色标记法存在漏标问题,会影响程序正确性, G1采用SATB方案解决漏标问题,本文我们就来重点分析一下SATBSATB - Snapshot At The Beginning 初始快照由Taiichi Yuasa开发的一个算法 - 首先它是一种思想主要用于GC的并发标记阶段记录并发标记是mutator修改的引用记录,remark阶段(STW)无需全量重新扫.原创 2021-12-10 15:10:43 · 1860 阅读 · 0 评论 -
Panda白话 - G1垃圾收集器 之 Refine线程
Refine线程:G1引入的并发线程池线程数 = G1ConcRefinementThreads+1 (默认)Refine线程的功能:处理新生代分区的抽样 - 更新YHR(Young Heap Region)的数目管理RSet处理新生代分区的抽样:功能: 设置YHR - 新生代分区的个数,使G1满足GC的预测停顿时间-XX:MaxGCPauseMillis抽样方法 - 关键源码:concurrentG1RefineThread.cppvoid ConcurrentG1Refi.原创 2021-11-23 18:58:34 · 1206 阅读 · 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 · 1665 阅读 · 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 · 1852 阅读 · 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 · 1343 阅读 · 0 评论