我已经转储了大量内存,并发现肯定存在内存泄漏。如果您查看屏幕截图,您会看到只有一个 fragment ,但有 9 个相同类型的演示者。应该只有一个。当我检查其中一个演示者实例时,探查器会向我显示对演示者的引用。 这些都是 RxAndroid 方法的回调方法。我正在取消订阅 fragment 的 onDestroyView 中的所有那些。演示者实例仍未清理(如您所见)。
所以我想知道如何区分有效的(循环的、内部的)引用和有问题的引用(这导致对象没有被清理)。
有人可以指导我如何找出可能发现内存泄漏的位置吗?
最佳答案
你应该试试 Leakcanary 来自 Square 的开源库,用于检测内存泄漏。它使您免于做大量的手动工作,例如
- 获取 hprof 转储
- 分析 hprof 转储以识别泄漏
- 找到导致泄漏的引用
- 修复并重复上述步骤
我有一个关于内存泄漏和 Leakcanary 的博客,you can find it here
关于android - 如何使用探查器查找内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47869616/