一、原理
- 引用计数算法(Rerference Counting)比较简单,对每个对象保存一个整型的引用计数器属性,用于记录对象被引用的情况。
- 对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1;当引用失效时,引用计数器就减1;只要对象A的引用计数器为0,即表示对象A不可能再被使用,可进行回收。
二、优缺点
优点
实现简单,垃圾对象便于辨识,判定效率高,回收没有延迟性。
缺点
- 它需要单独的字段存储计数器,这样的做法增加了存储空间的开销。
- 每次赋值都需要更新引用计数器,伴随着加法和减法,增加了时间开销。
- 引用计数器,有一个严重的问题,即无法处理循环引用的情况,这是一条致命缺陷,导致在java的垃圾回收器中没有使用这类算法。
循环引用图示