关于三色标记算法

关于三色标记算法

三色标记算法是一种用于垃圾收集得算法,主要用于解决在并发垃圾收集中可能出现得对象引用更新问题。在JVM中,这种算法主要应用于CMS(ConcurrentMarkSweep)收集器和G1(Garbage-first)收集器。

三色标记算法将对象分为三种颜色:

  1. 白色:表示对象尚未被垃圾收集器访问过,如果在垃圾收集结束时仍然为白色,那么该对象将被视为垃圾进行回收。
  2. 灰色:表示对象以及被垃圾收集器访问过,但是该对象引用得对象尚未被访问,灰色对象是垃圾收集器的工作对象。
  3. 黑色:表示对象已经垃圾收集器访问过,且该对象引用得所有对象也都已经被访问,黑色对象在本次垃圾收集过程中不再需要被访问。

垃圾收集过程:

  1. 垃圾收集器首先将所有的对象标记为白色;
  2. 从根对象开始,将跟对象标记为灰色;
  3. 垃圾收集器选择一个灰色对象,将其引用得所有白色对象标记为灰色;
  4. 将该对象标记为黑色
    这以过程一直持续到所有的对象都被标记为黑色,此时垃圾收集过程结束,所有的白色对象都被视为被垃圾并进行回收。

在并发垃圾收集过程中,应用程序可能会更新对象的引用,这可能会导致一些已经被标记为黑色的对象重新引用了白色对象,这种情况被称为"浮动垃圾"。为了解决这个问题,JVM采用了写屏障(Write Barrier)技术,当应用程序试图更新对象引用时,写屏障会将线管的对象重新标记为灰色,以确保不回遗漏任何需要被访问的对象。

相关推荐
Mxsoft61914 分钟前
AR远程定位偏差救场!某次现场故障,SLAM算法精准对齐设备模型!
算法·ar
han_hanker17 分钟前
统一拦截异常 @RestControllerAdvice
java·开发语言·数据库
Hello娃的25 分钟前
【量子力学】Hohenberg-Kohn 定理
人工智能·算法
忘记92632 分钟前
什么是spring boot
java·spring boot·后端
老马啸西风33 分钟前
成熟企业级技术平台 MVE-010-IGA(Identity Governance & Administration,身份治理与管理)平台
人工智能·深度学习·算法·职场和发展
Hello World呀35 分钟前
Java实现手机号和身份证号脱敏工具类
java·开发语言
曹牧37 分钟前
Java:serialVersionUID
java·开发语言
老马啸西风1 小时前
成熟企业级技术平台 MVE-010-app 管理平台
人工智能·深度学习·算法·职场和发展
lzh_200110121 小时前
树状数组理解
算法