【问题标题】:Can I test if another reference exists to an object in java?我可以测试是否存在对 java 中对象的另一个引用吗?
【发布时间】:2010-09-28 09:37:37
【问题描述】:

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

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

这可能吗?

谢谢

【问题讨论】:

    标签: java memory-leaks garbage-collection reference


    【解决方案1】:

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

    【讨论】:

    • “严重影响 GC”意味着系统变慢,因为垃圾收集器效率不高。
    【解决方案2】:

    没有标准的 Java API 可以做到这一点。

    但是,您的特定 JVM 可能能够通过使用 JVM 特定的诊断 API 来实现。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 2021-03-15
        • 1970-01-01
        • 2019-03-07
        • 1970-01-01
        • 2020-05-24
        相关资源
        最近更新 更多