- https://cloud.tencent.com/developer/article/2009789
- go1.14基于信号的抢占式调度实现原理
- Go 如何实现继承
- Go 空结构体 struct{} 的使用
- Go 语言笔试面试题汇总
三色标记,由3种颜色组成
- 黑色 Black:表示对象是可达的,即使用中的对象,黑色是已经被扫描的对象。
- 灰色 Gary:表示被黑色对象直接引用的对象,但还没对它进行扫描。
- 白色 White:白色是对象的初始颜色,如果扫描完成后,对象依然还是白色的,说明此对象是垃圾对象。
- 三色标记规则:黑色不能指向白色对象。即黑色可以指向灰色,灰色可以指向白色。
三色标记主要流程
-
初始所有对象被标记为白色。
-
寻找所有Root对象,比如被线程直接引用的对象,把Root对象标记为灰色。
-
把灰色对象标记为黑色,并它们引用的对象标记为灰色。
-
持续遍历每一个灰色对象,直到没有灰色对象。
-
剩余白色对象为垃圾对象。
网友评论