如何在Android中找到内存泄漏类/活动

时间:2010-09-15 03:10:55

标签: android memory-leaks

我是这个Android平台的新手。在一个应用程序中,存在内存泄漏。但我无法找到内存泄漏发生在哪个活动或类别。

我正在使用MAT来获得内存泄漏存在与否的确认。但是无法找到哪个活动正在泄漏。

请告诉我如何找到泄漏的活动。

感谢。

6 个答案:

答案 0 :(得分:35)

即使这个问题很安静。我认为带图像的小教程可能会有所帮助。首先,您需要安装MAT plugin。重新启动后,单击转储HPROF文件

Device controls

经过一段时间(约30秒),您将看到一个对话框,您可以点击完成。比你得到这个观点:

Dump result

在此处,您左键单击最大部分并过滤并使用传出引用。然后你在这里得到这个观点:

在这里,您可以看到我错过了删除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

通知示例:

enter image description here

答案 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