Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker DevOps


JVM:垃圾标记阶段算法之引用计数法

Java JVM 大约 428 字

垃圾标记阶段

对象存活判断。

引用计数法

Reference Counting

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

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

优点

实现简单,垃圾对象便于辨识;判定效率高,回收没有延迟性。

缺点

  • 它需要单独的字段存储计数器,这样的做法增加了存储空间的开销。
  • 每次值都要更新计数器,伴随着加注和减法操作,这增加了时间开销的
  • 引用计数器有一个严重的问题,即无法处理循环引用的情况。这是一条致命缺陷,导致在Java的垃圾回收器中没有使用这类算法。

补充

Python同时支持引用计数和垃圾收集机制。

Python解决循环引用问题:

  • 手动解除:在合适的时机,解除引用关系。
  • 使用弱引用weakrefweakrefPython提供的标准库,旨在解决循环引用。
阅读 111 · 发布于 2022-05-23

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批