本文出自《垃圾回收算法与实现》的内容。给自己的一个整理与巩固加深印象
垃圾回收的算法种类:
ref-count 引用计数法
这是最简单的垃圾回收算法,标记其活动的对象,然后搜索其没有标记的剩余对象(指向空闲链表的对象)删除。其复杂度为 \(O_(n) = 标记阶段(活动对象)的时间 + 清除阶段的时间\) 优点:1. 可即刻回收垃圾。2.最大暂停时间短。3. 没有必要的指针查询
缺点:1. 计数器的增减处理频繁。2.计数器本身需要占很多位。3.实现细节繁琐复杂。4.循环引用无法回收
部分标记清除算法
总共分为四种颜色:
- 黑色,表示活动的对象
- 白色,表示垃圾对象
- 灰色,表示搜索过程完成的对象
- 阴影,表示可能存在循环引用对象
这四种颜色状态可以用 2 位来表示:00,01,10,11
标记清除算法
GC 复制算法
标记清除压缩算法
// TODO: 未完待续