我是这个Android平台的新手。在一个应用程序中,存在内存泄漏。但我无法找到内存泄漏发生在哪个活动或类别。
我正在使用MAT来获得内存泄漏存在与否的确认。但是无法找到哪个活动正在泄漏。
请告诉我如何找到泄漏的活动。
感谢。
答案 0 :(得分:35)
即使这个问题很安静。我认为带图像的小教程可能会有所帮助。首先,您需要安装MAT plugin。重新启动后,单击转储HPROF文件:
经过一段时间(约30秒),您将看到一个对话框,您可以点击完成。比你得到这个观点:
在此处,您左键单击最大部分并过滤并使用传出引用。然后你在这里得到这个观点:
在这里,您可以看到我错过了删除ContentManager中的项目,其中有几项项目存储在我的待处理 HashMap
中。
答案 1 :(得分:5)
我发现在Android平台上跟踪内存泄漏的最佳帖子是:
http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html
第一部分已经过时,因为它现在已集成到Eclipse中,但大部分帖子都很棒!
答案 2 :(得分:4)
使用 LeakCanary - 适用于Android和Java的内存泄漏检测库。 当您的调试版本中检测到活动内存泄漏时,LeakCanary会自动显示通知。安装这个库非常简单。
https://github.com/square/leakcanary
通知示例:
答案 3 :(得分:2)
我无法评论之前的帖子,但重要的是要意识到你绝对应该担心内存管理,特别是在Android移动平台的资源密集环境中。有关更多信息,请点击此处:
http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html
答案 4 :(得分:0)
您可以在DDMS中看到它。
只需选择您的应用包名称,然后点击上面的按钮更新堆。
现在转到堆选项卡,单击原因GC。
你会找到所用物品的清单。
答案 5 :(得分:0)
您可以使用MMAT自动分析android内存泄漏,MMAT github page