【发布时间】:2018-05-31 20:44:09
【问题描述】:
我已经转储了大量内存,并发现肯定存在内存泄漏。如果你看截图,你会看到只有一个片段,但有 9 个相同类型的演示者。应该只有一个。当我检查一个演示者实例时,分析器会向我显示对演示者的引用。 这些都是 RxAndroid 方法的回调方法。我正在正确地取消订阅片段的 onDestroyView 中的所有内容。仍然没有清理演示者实例(如您所见)。
所以我想知道如何区分有效的(循环的、内部的)引用,因为对象仍然没有被垃圾回收,所以仍然存在,以及有问题的引用(导致对象没有被清理)。
有人可以指导我如何找出可能发现内存泄漏的位置吗?
【问题讨论】:
-
你尝试过 LeakCanary 了吗? github.com/square/leakcanary
-
我对 LeakCanary 的研究不够深入 - 现在会这样做......
-
这些对象的
Subscriptions 存储在哪里?调用unsubscribe是不够的,你必须null删除任何引用。或者,使用onTerminateDetach。
标签: android memory-leaks profiling rx-java rx-android