我可以测试java中的对象是否存在另一个引用?

时间:2010-09-28 09:37:37

标签: java memory-leaks garbage-collection reference

是否可以测试java中对象的其他引用是否存在?

即使操作效率低下,我也希望在调试时断言,一旦给定的引用超出范围,给定的对象将被垃圾收集。

这可能吗?

由于

3 个答案:

答案 0 :(得分:2)

您可以简单地覆盖finalize方法,然后在方法中放置一个断点。一旦对象被垃圾收集,您将在调试器中看到。但请注意,在生产系统中覆盖finalize方法是非常不需要的,因为它会严重影响GC。所以在调试之后,删除方法。

答案 1 :(得分:2)

没有标准的Java API可以这样做。

但是,您的特定JVM可以使用JVM特定的诊断API。

答案 2 :(得分:0)

正如安德森所说的关于JVM api。字符串类使用intern方法检查池中已存在的对象。他们使用这个名为

的API
   public String intern() {
          return VM.intern(this);
   }

org.apache.harmony.kernel.vm.VM类是本机代码。