如何找到配置文件的内存泄漏

我已经抛弃了大量的内存,并发现存在内存泄漏。如果你看截图,你会看到只有一个片段,但有9个相同类型的演示者。应该只有一个。当我检查一个演示者实例时,分析器向我显示对演示者的引用。 这些都是RxAndroid方法的回调方法。我正确地取消了在片段的onDestroyView中的所有这些。不过,演示者实例并未被清理(如您所见)。如何找到配置文件的内存泄漏

所以我想知道如何区分有效(循环,内部)引用,它仍然存在,因为对象仍然没有垃圾收集,和有问题的引用(这是导致对象不被清理)。

有人可以指导我如何找出内存泄漏的位置吗?

该转储是在触发GC之后生成的!

回答:

如果强制垃圾收集使用内存设置,那么你知道你看到更多的意想不到的对象也有使用,因此有可能他们是真正的泄漏,而不是等待被收集。 您需要找到gc root的路径,这会告诉您保持其他人不被垃圾收集的对象。

查看'Garbge Collection Roots'部分了解更多信息。 Android内存分析器会告诉你跳到gc根目录的最短跳数,但最好捕获一个hprof并使用类似Eclipse MAT的内容来查看gc root的路径。 Eclipse MAT甚至可以检查你的泄漏。

回答:

您应该尝试Leakcanary Square的开源库检测内存泄漏。这样可以节省你从做大量体力劳动的像

  • 以HPROF转储
  • 分析HPROF转储,以确定泄漏
  • 导致泄漏

  • 修复和重复以上
  • 查找参考步骤

我有我的博客内存泄漏& Leakcanary,you can find it here

以上是 如何找到配置文件的内存泄漏 的全部内容, 来源链接: utcz.com/qa/263738.html

回到顶部