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:如何测试应用程序中的内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章