是否可以获取对象引用计数?
我想知道是否有办法检查Java对象有多少引用。据我所知,唯一的方法是通过JNI接口使用JVMTI。是否有纯Java(不使用本机库)解决方案来获取此信息?
我们正在开发一种用于数据结构动画的教育工具(与学生实现某些算法一起使用),因此,如果我们能够以最非侵入性的方式检查“已发布”对象,那将是非常好的(我试图避免强迫此工具的用户调用诸如为了更新元素删除或类似内容的数据结构动画之类的方法)。objectReleased(objRef)
我想知道是否有办法检查Java对象有多少引用。据我所知,唯一的方法是通过JNI接口使用JVMTI。是否有纯Java(不使用本机库)解决方案来获取此信息?
我们正在开发一种用于数据结构动画的教育工具(与学生实现某些算法一起使用),因此,如果我们能够以最非侵入性的方式检查“已发布”对象,那将是非常好的(我试图避免强迫此工具的用户调用诸如为了更新元素删除或类似内容的数据结构动画之类的方法)。objectReleased(objRef)
从您的描述中,您似乎不太关心引用的实际计数,而只是知道何时收集了对象。如果是这种情况,可以使用 或 来确定引用的对象何时准备好进行定版。WeakReference
PhantomReference
看:
WeakReference
PhantomReference
据我所知,Java本身不提供此选项。
在这里,您有一些有关如何手动执行此操作的指导: