stop the Word会使虚拟机停顿,很多情况导致项目体验差,那能不能不进行STW呢?
听别人分析不能的原因如下:
扫描过程中可能会有新的对象生成,这些对象可能在已被扫描的分支上,所以没有被标记为不可达对象。
开始扫描时记录时间start,那我们给每个对象创建时标记一下创建时间create,在开始扫描时间之后创建的对象(create<start)都认为是有效的对象,这样最终找到没有标记可达且创建日期小于start的对象肯定就是start之前产生的垃圾,这时候把这些垃圾清除掉,这整个过程都不需要STW