Golang三色标记法
三个集合,颜色分别为白、灰、黑;
1.把所有对象放入白色集合;
2.遍历GC-Roots直接可访问到的节点,将其从白色集合放入灰色集合;
3.遍历灰色集合,将灰色集合引用的对象从白色放入灰色集合,最后将自己放入黑色集合;
4.重复3操作,直到灰色集合中的元素为空;
5.通过写屏障检测对象变化,重复以上操作;
6.回收白色集合中的对象
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
三个集合,颜色分别为白、灰、黑;
1.把所有对象放入白色集合;
2.遍历GC-Roots直接可访问到的节点,将其从白色集合放入灰色集合;
3.遍历灰色集合,将灰色集合引用的对象从白色放入灰色集合,最后将自己放入黑色集合;
4.重复3操作,直到灰色集合中的元素为空;
5.通过写屏障检测对象变化,重复以上操作;
6.回收白色集合中的对象
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭