【发布时间】:2010-09-28 09:37:37
【问题描述】:
是否可以在 java 中测试是否存在对某个对象的其他引用?
即使操作效率低下,我想在调试时断言,一旦给定引用超出范围,给定对象将被垃圾回收。
这可能吗?
谢谢
【问题讨论】:
标签: java memory-leaks garbage-collection reference
是否可以在 java 中测试是否存在对某个对象的其他引用?
即使操作效率低下,我想在调试时断言,一旦给定引用超出范围,给定对象将被垃圾回收。
这可能吗?
谢谢
【问题讨论】:
标签: java memory-leaks garbage-collection reference
您可以简单地覆盖finalize 方法,然后在该方法中放置一个断点。一旦对象被垃圾收集,您将在调试器中看到。但是请注意,在生产系统中重写 finalize 方法是非常不希望的,因为它会严重影响 GC。所以调试完后,去掉这个方法。
【讨论】:
没有标准的 Java API 可以做到这一点。
但是,您的特定 JVM 可能能够通过使用 JVM 特定的诊断 API 来实现。
【讨论】:
正如安德森所说的 JVM api 。 string 类使用 intern 方法检查对象是否已存在于池中。他们使用这个名为
的 API public String intern() {
return VM.intern(this);
}
org.apache.harmony.kernel.vm.VM 是本机代码的类。
【讨论】: