” 和 “弱三色不变式”。...强三色不变式
不允许黑色对象引用白色对象
弱三色不变式
所有被黑色对象引用的白色对象都处于灰色保护状态。...为了遵循这2种规则,继而产生了2种 "屏障机制",也就是 "插入屏障"和"删除屏障"
插入屏障
在 A 对象引用 B 对象的时候,B 对象被标记为灰色。...(将 B 挂在 A 下游,B 必须被标记为灰色)
由于栈空间容量小,响应速度快,函数调用弹出频繁,所以插入屏障在栈对象操作中不使用,仅在堆对象中使用
所以在回收完堆对象时,栈空间对象需要进行一次 停止程序运行...,重新标记 黑白,再进行回收栈对象
删除屏障
在GC开始后,所有需要删除的 白色/灰色 对象都标记为灰色
通过插入屏障和删除屏障,解决了上面的引用删除问题
但是,删除屏障的回收精度低,只要是GC开始后