引用计数算法

2023-07-27 jvm

如何判断一个对象死亡?当一个对象已经不再被任何的存活对象继续引用时,就可以宣判为已经死亡;判断对象存活的算法一般有两种:引用计数算法和可达性分析算法。

# 引用计数算法

引用计数算法:对每个对象保存一个整型的引用计数器属性,用于记录对象被引用的情况。

对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1;当引用失效时,引用计数器就减1。只要对象A的引用计数器的值为0,即表示对象A不可能再被使用,可进行回收。

  • 优点:实现简单,垃圾对象便于辨识;判定效率高,回收没有延迟性。
  • 缺点: 需要单独的字段存储计数器,增加存储空间的开销,每次赋值都需要更新计数器,伴随着加法和减法操作,增加了时间开销。引用计数器有一个严重的问题,即无法处理循环引用的情况。这是一条致命缺陷,导致在Java的垃圾回收器中没有使用这类算法。

循环引用

上次更新: 5 个月前