我正在查看一些hprof,试图找到内存泄漏。
我的代码从我正在构建的目标应用程序中保存对Java Components的引用。 使用Eclipse MAT我可以看到其中一些组件仅由我的代码引用。我想确定目标应用程序已完成它们,即它打算将它们垃圾收集。
在C#中有一个Control IsDisposed property如果为true则基本上意味着应用程序已使用该控件完成。
在Java中是否存在等效物,可以在Eclipse MAT或任何其他hprof分析器中看到,它将最终告诉您是否留下了一个组件进行垃圾回收?
我更喜欢使用属性来识别泄漏的组件,因为使用此条件更容易查询堆,而不是“路径到GC根目录的每个组件仅在我的代码中”
由于
答案 0 :(得分:0)
查询堆是非常非常昂贵的。它意味着检查堆中的每个对象以查看引用的内容。
你可以在Java中做的是持有WeakReference,在垃圾收集之后这将消失。如果保留它仍然在某处使用。