我想知道是否有办法检查Java对象有多少引用。据我所知,唯一的方法就是通过JNI接口使用JVMTI。是否有纯java(不使用本机库)解决方案来获取此信息?
我们正在开发一种用于数据结构动画的教育工具(与学生实现某些算法一起使用),所以如果我们能够以最非侵入性的方式检查“已发布”的对象,那将是非常好的。我试图避免强迫这个工具的用户调用一个方法,如ObjectReleased(objRef),以便更新数据结构动画,以便删除元素或类似的东西)
答案 0 :(得分:12)
根据您的描述,您似乎不太关心引用的实际数量,而只关心何时收集对象。如果是这种情况,您可以使用WeakReference或PhantomReference来确定引用的对象何时可以进行最终确定。
请参阅:
希望这有帮助。
答案 1 :(得分:5)
就我所知,Java本身并不提供此选项。
这里有一些关于如何手动完成的指导: