0

我正在查看一些 hprof,试图找到内存泄漏。

我的代码保存了我正在构建的目标应用程序中对 Java 组件的引用。使用 Eclipse MAT,我可以看到其中一些组件仅由我的代码引用。我想确定目标应用程序已经完成了它们,即它打算让它们被垃圾收集。

在 C# 中有一个Control IsDisposed 属性,如果该属性为真,则基本上意味着应用程序已使用该控件完成。

在 Java 中是否有一个等价物,可以在 Eclipse MAT 或任何其他 hprof 分析器中看到,它会最终告诉您组件是否要被垃圾收集?

我更喜欢使用属性来识别组件是否已泄漏,因为使用此条件更容易查询堆,而不是“每个组件的路径到 GC 根的路径仅以我的代码结尾”

谢谢

4

1 回答 1

0

查询堆非常非常昂贵。这意味着检查堆中的每个对象以查看正在引用的内容。

你可以在 Java 中做的是持有一个 WeakReference,在垃圾回收之后它会消失。如果它被保留,那么在某处仍有用处。

于 2013-07-30T06:57:34.270 回答