我正在尝试学习如何在我的应用中识别和处理内存泄漏。我正在读这个great article,但我对如何在Android Studio 3.0附带的新“Android Profiler”工具中应用它感到困惑。
我有一个测试应用程序,LeakCanary指出我的应用程序有内存泄漏。
事实上,当我运行探查器并按“dump java heap”时,我可以看到我的MyCollectionActivity有4个实例,当我点击这些实例时,我可以看到详细信息:
但是文章中显示的工具有“Android Profiler”中无法看到的选项:
我不会深入探讨如何浏览庞大的内存堆。 相反,我会将注意力转向上层的Analyzer Tasks 右下角截图的右上角。所有你需要做的就是检测 上例中介绍的内存泄漏是检查Detect Leaked 活动然后按播放以显示泄露的活动 根据分析结果。
在新工具中,例如,这个“分析器任务”和“分析结果”显示有泄漏的实例?
如果我们选择泄露的活动,我们会看到参考文献 保持活动的参考的树可以是 鉴定。通过查找深度为零的实例,我们发现了 实例mListener位于位置管理器中是原因 我们的活动不能被垃圾收集。
Android Profiler的图像也没有显示参考树,它显示了参考,但它似乎并不是非常有用。