是否存在与C#Control IsDisposed等效的Java组件?

时间:2013-07-30 02:25:28

标签: java memory-leaks hprof

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

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

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

在Java中是否存在等效物,可以在Eclipse MAT或任何其他hprof分析器中看到,它将最终告诉您是否留下了一个组件进行垃圾回收?

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

由于

1 个答案:

答案 0 :(得分:0)

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

你可以在Java中做的是持有WeakReference,在垃圾收集之后这将消失。如果保留它仍然在某处使用。