Android:如何测试应用程序中的内存泄漏?

Posted

技术标签:

【中文标题】Android:如何测试应用程序中的内存泄漏?【英文标题】:Android : How to test memory leak in an application? 【发布时间】:2012-09-13 12:09:30 【问题描述】:

我开发了一个应用程序,我想检查应用程序中发生的内存泄漏。我正在尝试使用 eclipse MAT,但不成功,我正在获取 HROF 文件,但 eclipse MAT 无法读取它。谁能帮帮我。任何其他查找方式。

【问题讨论】:

你已经阅读了这篇文章:android-developers.blogspot.com/2011/03/… 那么有什么令人困惑的地方? 我经历过这个。我也有堆转储文件。当我试图在 Eclipse 内存分析器中打开它时,即 MAT 显示文件无法读取。 【参考方案1】:

Android 的 dump.hprof 文件需要转换。然后你就可以在MAT中打开converted-dump.hprof了。

hprof-conv dump.hprof converted-dump.hprof

【讨论】:

Morrison-- 哦……谢谢。我想我忘记转换它了。我会尝试并让你知道..【参考方案2】:

我发现this 视频非常有用。这讲了如何从 logcat(垃圾收集器日志)中查找内存泄漏以及如何使用内存分析器(MAT)。

【讨论】:

Sujith.. 谢谢.. 我已经浏览了这个视频.. 很棒的视频来了解内存分析器 (MAT)。【参考方案3】:

@sujith video 非常好。总而言之,1)视频谈到了一个非常难以发现的“非静态内部类”泄漏。 this page对此有详细的解释。 2) 他谈到了使用内存分析工具时的一些重要概念,例如浅堆与保留堆、GC Root 和支配树。 3) 他展示了一个使用 MAT 来识别泄漏的示例。在 MAT 中,他所说的最有用的工具是 Histogram 和 Dominator Tree。在进一步检查对象时,他使用右键菜单“到 GC Root 的路径”,然后使用“排除弱引用”。

【讨论】:

以上是关于Android:如何测试应用程序中的内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 C++ Builder 10.4 / Android 应用程序中的泄漏

如何从android中的本机代码中查找内存泄漏

android 稳定性monkey测试

如何检测内存泄漏

如何使用 Malloc Debug 来检查本机内存泄漏?

Android的内存泄漏