golang的gc流程,会stw吗,三色不变和混合写屏障
题目来源: 百度, 知乎,跟谁学
答案:
三色标记垃圾收集器的工作原理
- 从灰色对象的集合中选择一个灰色对象并将其标记成黑色;
- 将黑色对象指向的所有对象都标记成灰色,保证该对象和被该对象引用的对象都不会被回收;
- 重复上述两个步骤直到对象图中不存在灰色对象;
当三色的标记清除的标记阶段结束之后,应用程序的堆中就不存在任何的灰色对象,我们只能看到黑色的存活对象以及白色的垃圾对象,垃圾收集器可以回收这些白色的垃圾,
三色标记清除算法本身是不可以并发或者增量执行的,它仍然需要 STW