美文网首页
JVM的三色标记

JVM的三色标记

作者: 玖柒叁 | 来源:发表于2023-09-07 10:51 被阅读0次

    什么是三色标记

    三色标记是指垃圾收集器在进行可达性分析时,用白、黑、灰来标记对象状态的一种机制。其中白色表示该对象还没有被标记过;灰色表示这个对象被垃圾收集器访问过,但是对象内部的引用还没有完全被扫描过;黑色表示这个对象以及这个对象内部的引用都被扫描过。扫描结束后状态还是白色的对象便是要被清理的对象。

    三色标记的缺点

    并发环境下会出现多标和漏标问题,多标就是已经将某个对象标记为灰色但是用户线程又放弃了该对象。漏标是在扫描后某个黑色对象又引用了白色对象,导致了漏标发生。

    如何解决漏标问题:增量更新或者原始快照

    增量更新:记录扫描时在黑色对象中重新插入白色对象的情况,扫描后再将这些黑色对象作为根节点重新扫描
    原始快照:当灰色对象要删除白色引用关系时,要将这些情况记录下来,本次扫描后再进行一次扫描标记

    相关文章

      网友评论

          本文标题:JVM的三色标记

          本文链接:https://www.haomeiwen.com/subject/koglvdtx.html