图解GC(垃圾回收算法)加强版计数引用法(3)1位引用计数法

1位引用计数法

   1位引用计数法(one bit reference counting)由三位计算机科学家W.R.Stoye,T.J.W.Clarke,A.C.Norman提出。根据这三位科学家观察,“几乎没有什么对象是公用的,所有对象都能马上回收”。

  因此,三位科学家提出只用1b来计数。1b固然只有0,1两种表示法。当计数器为0时表示只有1个引用,当计数器为1时表示被多个引用。有意思的是,三位科学才采用不一样的计数思维来解决难题。传统的技术法中计数器在对象自己本身中技术,而在1位引用计数法中,对数器由指向对象的对象指针中技术。判断是否回收时,若计数为0表示有且只有自己引用对方则自己不引用时就将对方回收。若计数为1则表示除了自己还有其他引用对方的对象,那么自己引用时则不能回收对方。

  我们以下图举个例子:

图中原本A指向C,B指向D。这时A要取消指向C取而代之的是指向D,此刻A先判断自己是1还是0,这里是1则不回收C。然后将B指针复制给A,这里D又多了个指向,所以B和A

计数器为1。

代码实现也比较简单,伪代码如下:

算法优点:

   计数器位数减少,每个对象所占用的内存空间也减少,并且当A引用理他地址很远的C时,以往的算法需要读取C的计数器,而这里只需读取A。这有利于Cache缓存,大大提高了程序效率。

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大学一年级

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

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

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

打赏作者

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

抵扣说明:

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

余额充值