JVM虚拟机:垃圾回收之三色标记

本文介绍了JVM垃圾回收中的三色标记法,用于解决并发标记过程中的漏标问题。三色标记法通过白色、灰色和黑色表示对象的标记状态,防止对象因引用关系变化导致的误回收。文章详细分析了漏标的产生条件及两种解决策略:增量更新和STAB,分别在CMS和G1垃圾回收器中应用。

本文重点

在前面的课程中我们已经学习了垃圾回收器CMS和G1,其中CMS和G1中的mixedGC都存在四个过程,这四个过程中有一个过程叫做并发标记,也就是说程序一边运行,一边标记垃圾。这个过程最困难的是:如果在标记垃圾的时候,如果对象的引用关系发生了改变,此时应该如何处理?

问题详解

简单来说就是,对象A不是垃圾,但是在并发标记的过程中,指向A的引用关系发生了变化,程序没有及时发现,从而误认为没有引用指向A,从而造成了A被当作垃圾而被回收的情况,这个情况我们称为漏标,漏标可以通过三色标记的方式来完成。

三色标记的基本含义

三色标记表示有三种颜色,每种颜色有独特的意义,如下所示:

白色:自身未被标记的对象

灰色:自身被标记,成员变量未被标记

黑色:自身和成员变量均已标记完成

被标记了就可以认为自己不是垃圾了。

三色标记法

如上所示,现在有三个对象,分别为A、B、D,其中A是自身和成员变量均已标记完成。B是自身被标记而成员未被标记。D是自身未被标记。现在假如在并发执行的过程中,有一个黑色的对象指向了白色,而灰色不再指向白色的对象了,如下所示:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能_AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值