【发布时间】:2022-05-09 16:20:05
【问题描述】:
我想知道是否有办法检查 Java 对象有多少引用。据我所知,唯一的方法是通过 JNI 接口使用 JVMTI。是否有纯 Java(不使用本机库)解决方案来获取这些信息?
我们正在开发一种用于数据结构动画的教育工具(用于学生实现某些算法),所以如果我们能以最非侵入性的方式检查“已发布”对象会非常好(I'我试图避免强迫此工具的用户调用诸如objectReleased(objRef) 之类的方法来更新数据结构动画以进行元素删除或类似操作)。
【问题讨论】:
-
在 JVM 中不跟踪引用计数。唯一知道的方法就是数一数。
-
有一个库可用于在对象被垃圾回收时获取通知。更多详情请参考此链接sourceforge.net/projects/gcradar
-
@AmrenduPandey,不要简单地“加粗一些字母”——这不是改进问题的合适方法。编辑应该是实质性的,而不仅仅是格式更改。
-
Java 没有这样的规定来计算/获取对对象的引用列表。允许这样做可能是一个严重的问题,因为任何人都可以最终确定该对象,即使上面的某些代码仍然需要它。