如题,在sweep的时候,也是并行发生的,难道没有建立引用的场景么,为什么不开启写屏障呢
白色对象是用户代码没有任何一个指针指向该对象了,那么用户也就无法去引用或者访问该对象,那么清扫掉该对象没有任何问题,而且还没清扫之前,白色对象也不能作为新的对象分配给其他人。这样就能保证安全。
#4
更多评论
sweep是在mark之后的,只清理白色对象,也就是用户没有任何引用的对象,写屏障在mark的时候开启就好了,在mark阶段,如果新建了一个对象,都是直接标记为黑色,表示存活对象。总的来说,清扫的时候没必要写屏障,它只关心白色对象。
#1