Go 三色标记法详解:并发标记如何保证不漏标不错标
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
三色标记:所有对象初始为白色;从根对象开始标记为灰色;循环:从灰色队列取对象,将其引用的对象标记为灰色、自身标记为黑色,直到灰色队列为空;最后白色对象为不可达,可回收。并发标记的问题:标记期间用户代码可能修改引用关系(黑色对象指向白色对象),导致漏标(误回收)。解决:写屏障——并发标记时,黑色对象写入白色指针会记录/置灰该对象(Go 用混合写屏障),保证标记正确性。
回复
0 条回复