Tricolor Mark & Sweep — 用可视化交互讲清楚 GC 到底怎么干活
三色标记法把对象分成 白、灰、黑 三组。从根对象出发,用 BFS 方式遍历引用图, 标记过程结束后,仍然白色的对象就是垃圾,可以回收。 整个过程可以和用户代码并发执行,只短暂 STW。
① Mark Setup — STW,开启写屏障
② Marking — 并发标记,找到所有可达对象
③ Mark Termination — STW,关闭写屏障
④ Sweep — 并发清扫,回收白色对象内存
传统的"标记-清除"需要长时间 STW,程序完全停顿。
三色标记 + 写屏障让 GC 可以和 Mutator 并发工作,
这是 Go 低延迟 GC 的关键设计(目标 < 1ms STW)。