JVM垃圾回收GC——三色标记法

JVM(Java虚拟机)的三色标记法是一种用于垃圾回收(GC)的算法,用于标记和清除不再使用的对象。它基于对象的可达性分析,将对象分成三个不同的颜色:黑色、灰色和白色。

  1. 黑色:表示对象已经被标记为可达性分析的一部分,即该对象是可达的,其引用链上的所有对象都已经被垃圾回收器扫描过。

  2. 灰色:表示对象还未被完全扫描和分析。当一个对象被标记为灰色时,它的引用链上的对象尚未被扫描和分析,即引用链上的其他对象还未确定是否可达。

  3. 白色:表示对象尚未被扫描和分析,即还未确定是否可达性。在标记阶段之前,所有的对象都是白色。

垃圾回收器首先将所有的对象标记为白色,然后从根对象(如活动线程、全局变量等)开始,通过深度优先搜索算法遍历对象引用链,并将可达的对象标记为黑色。一旦完成可达性分析,所有剩余的白色对象都可以判定为不可达,即垃圾对象,最终将被清除。

JVM的三色标记法是一种高效的垃圾回收算法,能够准确地标记和清除不再使用的对象,从而释放内存资源。它是现代JVM垃圾回收器中的一种常用算法。

例子:
假设有以下对象:A、B、C、D。我们从根对象开始标记和清除。

初始状态:所有对象都被标记为白色。

根对象标记:从根对象开始,比如活动线程、全局变量等,将它们标记为灰色。

遍历引用链:从灰色对象开始,按深度优先搜索算法遍历其引用链,将可达的对象标记为灰色。

黑色标记:一旦对象的引用链上的所有对象都被扫描过,将该对象标记为黑色,表示已经完成标记。

清除白色对象:所有剩余的白色对象都可以判定为不可达,即垃圾对象,将它们从内存中清除。

这个过程就是JVM三色标记法的基本流程。通过这种方式,只有被标记为黑色的对象会被保留下来,其余的白色对象会被清除,从而实现垃圾回收的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值