美文网首页
三色标记

三色标记

作者: 此间有道 | 来源:发表于2020-07-14 23:21 被阅读0次

一、并法标记期间出现的问题

1)漏标:需要处理,不然误回收


漏标

2)多标:浮动垃圾,下次回收;


多标

二、漏标的解决方案

并法标记过程中产生漏标时,会执行以下两个逻辑:
1)建立新关联
未扫描到的对象被已扫描过的黑对象引用,而黑对象不会再扫描标记其关联对象;
2)删除旧关联
把此对象从其旧关联删除,导致此对象只被黑对象关联,无法再被标记,而产生漏标;

增量更新

在并发标记期间,新赋值的对象作为增量记录下来,再重新标记时扫描。

实现:
通过写屏障(写后屏障),把建立新关联的左值对象维护到一个表,在重新标记节点重新扫描表中的对象;黑色对象一旦新插入了指向白色对象的引用之后, 它就变回灰色对象了。

特点:
1)所有在并发标记过程中变化的引用导致由黑变灰的对象都需要重新遍历标记;
2)性能开销大,小内存时适用;

原始快照

在并发标记期间,引用关系发生变化的对象一律标记为黑对象,本次不回收。

实现:
通过写屏障(写前屏障),把删除旧关联时的右值对象维护到一张表,重新标记时标为黑色。本次不回收。此时,表中对象有可能是被引用的对象,也有可能是垃圾对象(浮动垃圾)。

特点:
1)所有在并发标记过程中变化的节点都做标记,本次垃圾回收不处理。
2)性能开销小,大内存时适用;

三、CMS和G1的实现

  1. CMS:写屏障 + 增量更新
  2. G1:写屏障 + 原始快照

相关文章

  • 垃圾回收器串讲及 HotSpot 的细节实现

    并发标记与三色标记 三色标记 在三色标记法之前有一个算法叫 Mark-And-Sweep(标记清除)。这个算法会设...

  • 三色标记原理,我给应聘者问懵了...

    摘要:知道三色标记吗?是红黄蓝三色标记吗? 本文分享自华为云社区《从三色标记说开去[https://bbs.hua...

  • JVM学习12·垃圾回收器以及HotSpot的实现细节

    1.并发标记与三色标记 在三色标记法之前有一个算法叫Mark-And-Sweep(标记清除)。这个算法会设置一个标...

  • 三色算法和SATB算法

    1、三色标记算法 1、提到并发标记,我们不得不了解并发标记的三色标记算法。它是描述追踪式回收器的一种有效的方法,利...

  • 三色标记

    一、并法标记期间出现的问题 1)漏标:需要处理,不然误回收 2)多标:浮动垃圾,下次回收; 二、漏标的解决方案 并...

  • 三色标记

    将对象逻辑上进行标记,黑(自己已识别,指针所指也识别),白(未识别),灰(自己已识别,但是指针对应对象未识别) C...

  • CMS,G1 垃圾回收器中的三色标记了解吗?

    三色标记算法思想 三色标记法是一种垃圾回收法,它可以让 JVM 不发生或仅短时间发生 STW(Stop The W...

  • 三色标记法

    CMS - 采用方法1 增量更新,关注引用的增加。效率较低,因为其要重新扫描灰色的所有子引用 G1 - 采用方法2...

  • 三色标记法

    背景 相比之前的标记清除算法,其GC执行期间需要把整个程序完全暂停,不能异步执行GC操作。对实时性要求比较高的系统...

  • 三色标记法

    根据可达性分析找出存活对象,从GC Roots开始遍历访问。 将遇到的对象按是否访问过分三个颜色(黑白灰)2.1 ...

网友评论

      本文标题:三色标记

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