是否可以获取对象引用计数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以获取对象引用计数?相关的知识,希望对你有一定的参考价值。
我想知道是否有办法检查Java对象有多少引用。据我所知,唯一的方法就是通过JNI接口使用JVMTI。是否有纯Java(不使用本机库)解决方案来获取此信息?
我们正在开发一种用于数据结构动画的教育工具(与学生实现某些算法一起使用),所以如果我们能够以最非侵入性的方式检查“已发布”的对象,那将是非常好的(我试图避免强迫此工具的用户调用ObjectReleased(objRef)等方法来更新数据结构动画以删除元素或类似的东西
答案
根据您的描述,您似乎不太关心引用的实际数量,而只关心何时收集对象。如果是这种情况,您可以使用WeakReference或PhantomReference来确定引用的对象何时可以完成。
看到:
- WeakReference的Javadoc:http://download.oracle.com/javase/6/docs/api/java/lang/ref/WeakReference.html
- PhantomReference的Javadoc:http://download.oracle.com/javase/6/docs/api/java/lang/ref/PhantomReference.html
- 弱引用的一个很好的解释:https://community.oracle.com/blogs/enicholas/2006/05/04/understanding-weak-references
- 垃圾收集器回调:http://java.dzone.com/articles/letting-garbage-collector-do-c
- Garbage collection notification?
希望这可以帮助。
另一答案
据我所知,Java本身不提供此选项。
这里有一些关于如何手动完成的指导:
以上是关于是否可以获取对象引用计数?的主要内容,如果未能解决你的问题,请参考以下文章