为什么标记清除算法不能与程序并行执行,而是需要STW。
例如四个对象的依赖关系如下:
A -> B -> C -> D
加入GC程序与用户程序并行,当垃圾回收程序遍历到C时,依赖关系变为:
A->B、D->C
继续标记下去,D对象将会被认为没有被任何对象依赖。
一句话总结来说,GC和用户程序并行,可能会将存活的对象看做未存活。
STW的原因
最新推荐文章于 2023-04-05 11:49:42 发布
为什么标记清除算法不能与程序并行执行,而是需要STW。
例如四个对象的依赖关系如下:
A -> B -> C -> D
加入GC程序与用户程序并行,当垃圾回收程序遍历到C时,依赖关系变为:
A->B、D->C
继续标记下去,D对象将会被认为没有被任何对象依赖。
一句话总结来说,GC和用户程序并行,可能会将存活的对象看做未存活。