是否可以和/或容易地找出任意对象有多少个传入引用?也就是说,有多少对象引用它。
提前致谢...
简短的回答是:你自己数一下。
StackOverflow 的另一个问题有一些有用的答案和资源
是否可以获得对象引用计数? https://stackoverflow.com/questions/5334137/is-it-possible-to-get-the-object-reference-count
更多谷歌搜索会出现此页面:http://www.velocityreviews.com/forums/t363649-how-do-i-get-a-reference-count-of-a-object-in-java.html http://www.velocityreviews.com/forums/t363649-how-do-i-get-a-reference-count-of-a-object-in-java.html
这表明:
Java 不维护引用计数。特定的 JVM 可能(我
还没有听说过任何这样的),但是如果 JVM 维护引用
认为这是 JVM 实现内部的“私事”。
Java 没有构造或实用程序类来检索引用计数,
即使 JVM 碰巧维护它们。 (类似地,JVM 可能
维护与其 JIT 编译器关联的计数器,但是那些
Java 本身无法访问统计信息。)
如果您想维护自己的对象的引用计数,您将
需要手动完成。这可能是一项容易出错的业务:
MyObject ref = null;
try {
// get a reference, increment counter
ref = MyObject.getReference(args);
...
} finally {
// decrement counter, promising to drop reference
if (ref != null) {
ref.release();
ref = null;
}
}
您可以建立一个自我强制的“协议”,需要这种类型
围绕 MyObject 的每次使用都有样板,但这会很笨拙
而且很容易出错。并非所有情况都像这样简单
上面的:例如,如果您有两个引用,其生命周期
重叠但不嵌套,你不能将它们匹配到的词法范围
尝试/终于如此整齐。
集合框架几乎是禁区,或者至少是
非常难用。当您将 MyObject 放入 SortedMap 时,对于
例如,Map 中保留了多少对 MyObject 的引用?
答案是否取决于 MyObject 是用作键还是用作
值,或两者兼而有之?在我看来,你维持的机会
准确的计数很少。
退后一步:为什么需要这些引用计数?什么目的
你想实现吗?也许有更好的方法来实现你的目标
总体战略而不是采取这种非常困难的战术。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)