如何使用新的AndroidProfiler处理内存泄漏

时间:2017-11-26 22:37:38

标签: android memory-leaks android-studio-3.0 leakcanary android-profiler

我正在尝试学习如何在我的应用中识别和处理内存泄漏。我正在读这个great article,但我对如何在Android Studio 3.0附带的新“Android Profiler”工具中应用它感到困惑。

我有一个测试应用程序,LeakCanary指出我的应用程序有内存泄漏。

事实上,当我运行探查器并按“dump java heap”时,我可以看到我的MyCollectionActivity有4个实例,当我点击这些实例时,我可以看到详细信息:

enter image description here

但是文章中显示的工具有“Android Profiler”中无法看到的选项:

  

我不会深入探讨如何浏览庞大的内存堆。   相反,我会将注意力转向上层的Analyzer Tasks   右下角截图的右上角。所有你需要做的就是检测   上例中介绍的内存泄漏是检查Detect Leaked   活动然后按播放以显示泄露的活动   根据分析结果。

在新工具中,例如,这个“分析器任务”和“分析结果”显示有泄漏的实例?

enter image description here

  

如果我们选择泄露的活动,我们会看到参考文献   保持活动的参考的树可以是   鉴定。通过查找深度为零的实例,我们发现了   实例mListener位于位置管理器中是原因   我们的活动不能被垃圾收集。

Android Profiler的图像也没有显示参考树,它显示了参考,但它似乎并不是非常有用。

1 个答案:

答案 0 :(得分:8)

  1. 首先,您需要保存 Heap Dumb 。转储保存,扩展名为 hprof 。请检查以下附加图像以保存此文件。
  2. 在Android Studio中打开相同的文件,之后您就可以在右上角看到 Analyzer Tasks 选项。
  3. enter image description here