go垃圾回收sweep为什么不用开启写屏障

smokezl · · 280 次点击
白色对象是用户代码没有任何一个指针指向该对象了,那么用户也就无法去引用或者访问该对象,那么清扫掉该对象没有任何问题,而且还没清扫之前,白色对象也不能作为新的对象分配给其他人。这样就能保证安全。
#4
更多评论
sweep是在mark之后的,只清理白色对象,也就是用户没有任何引用的对象,写屏障在mark的时候开启就好了,在mark阶段,如果新建了一个对象,都是直接标记为黑色,表示存活对象。总的来说,清扫的时候没必要写屏障,它只关心白色对象。
#1
清扫的时候,就不会有白色对象被引用,从而到导致本不该被删除却被删除的问题么
#2