存在的问题
- 为什么必须三色,二色的话会有什么问题
- 插入写屏障为什么不行
- 为什么必须使用混合写屏障,删除写屏障为什么不行。
插入写屏障为什么不行
如果一个对象从堆上移动到栈上指向,则不开启写屏障,此时就会出现漏标记。所以在启用插入写屏障的同时,需要在扫描结束后,启动stw,然后重新扫描stack。
删除写屏障为什么不行
删除写屏障可以解决上面的问题,但是还有个问题,就是 栈上的移动到堆上,因为栈上没有写屏障,该对象不会被标灰色,那么又会出现漏标的情况。 所以一般删除写屏障需要在开启的时候 进行快照。
网友评论