文章分类 -  垃圾回收

摘要:概述 G1GC具备软实时性,因为它具备两个功能 1、设置期望暂停时间(最后期限):支持用户自定义mutator暂停时间 2、可预测性:预测下次GC的暂停时间,通过延迟执行GC、拆分GC目标对象来遵守1中设置的期望暂停时间。 背景 缩短最大暂停时间和保持mutator的吞吐量是两个需要平衡的指标。增量 阅读全文
posted @ 2022-07-14 16:34 bavaria 阅读(203) 评论(0) 推荐(0)
摘要:概述 CMS收集器是一款强调低延时的老年代垃圾收集器 CMS收集器的流程 初始标记 这个过程是STW的,主要分为两步: 1、标记GC Roots可达的老年代对象; 2、遍历GC Roots下的新生代对象能够可达的老年代对象; 并发标记 GC线程与工作线程并存,进行并发标记。标记那些GC Roots最 阅读全文
posted @ 2022-07-14 15:49 bavaria 阅读(206) 评论(0) 推荐(0)
摘要:由来(年龄) 根据经验“大部分对象在生成后马上就变成了垃圾,很少有对象能活得很久”。 分代垃圾回收利用该经验,在对象中导入“年龄”概念,经历过一次GC后活下来的对象年龄为1岁。 分代GC通过年龄对对象进行分代管理,在年轻代频繁执行GC(高频),老年代仅在需要时才执行GC(低频)。 分代 分代垃圾回收 阅读全文
posted @ 2022-07-14 11:21 bavaria 阅读(261) 评论(0) 推荐(0)
摘要:缘由 增量式垃圾回收是一种通过逐渐推进垃圾回收来控制mutator最大暂停时间的方法。增量式垃圾回收是将GC和mutator一点点交替运行的手法。 三色标记算法 Dijkstra等人提出的概念,按照各自的情况将对象分成三种 白色:还未搜索过的对象 灰色:正在搜索的对象 黑色:搜索完成的对象 算法描述 阅读全文
posted @ 2022-07-14 11:07 bavaria 阅读(264) 评论(0) 推荐(0)
摘要:概念 将堆分为大小相等的两个空间,From空间和To空间。 利用From空间进行分配。当From空间被完全占满时,GC会将活动对象复制到To空间。当复制完成后,该算法会把From空间和To空间互换,GC也就结束了。 过程 垃圾收集器将根直接引用的对象复制到To区域并设置旧对象的copied标记为tr 阅读全文
posted @ 2022-07-14 10:55 bavaria 阅读(135) 评论(0) 推荐(0)
摘要:概念 标记-清除算法由标记阶段和清除阶段构成。标记阶段是把 所有活动对象都做上标记的阶段。清除阶段是把那些没有 标记的对象,也就是非活动对象回收的阶段。 标记阶段 collector会为堆里的所有活动对象(根)打上标记,然后递归地标记通过指针数组能访问到的对象。 深度优先搜索:尽可能从深度上搜索树形 阅读全文
posted @ 2022-07-14 10:50 bavaria 阅读(239) 评论(0) 推荐(0)
摘要:mutator 修改GC对象间引用关系的线程,即“应用程序”。由Dijkstra提出,mutator实际进行2中操作: 1、生成对象 2、更新指针 活动对象/非活动对象 活动对象:分配到内存空间中的对象中那些能通过mutator引用的对象成为“活动对象”。 非活动对象:分配到堆中那些不能 通过程序引 阅读全文
posted @ 2022-07-14 10:48 bavaria 阅读(47) 评论(0) 推荐(0)