首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android Eclipse内存分析==> ==>内存分析器

Android Eclipse内存分析==> ==>内存分析器
EN

Stack Overflow用户
提问于 2010-06-25 02:04:34
回答 3查看 44K关注 0票数 46

我需要检查我的应用程序的内存泄漏,我还需要查看我的应用程序的内存分配。我下载并安装了eclipse memory analyzer,看起来第一步是打开一个堆转储。但是什么是堆转储,我如何创建堆转储。我到底该如何使用这个软件呢?我用谷歌搜索了一下,但找不到任何有用的信息,谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-25 02:25:25

在调试应用程序时,在Eclipse中打开DDMS。在工具栏上有一个heap dump按钮,您可以使用它来生成一个在Eclipse内存分析器中查看的堆转储。我认为只有1.6+或2.0+ SDK才支持这一点。

票数 40
EN

Stack Overflow用户

发布于 2010-06-25 03:30:53

dalvik VM的堆转储需要使用Android SDK的tools目录中的hprof-conv.exe转换工具转换为常规的hprof格式。您可以使用Eclipse MAT或其他工具打开此hprof : YourKit http://www.yourkit.com/和JProbe http://www.quest.com/jprobe/

除了DDMS之外,您还可以通过Debug.dumpHprofData(...)从您的应用程序/代码(仅限较新的SDK)创建hprof

请注意,在DDMS中,您可以看到应用程序正在使用的堆。它不会显示外部资源(如位图)正在分配的本机堆。不过,在检查内存泄漏时也需要考虑这些资源。当本机堆和应用程序堆加起来为16MB / resp时。24MB时,会出现OOM错误。

您可以通过Debug.getNativHeapAllocatedSize()查看已使用的本机堆(即应用程序中的位图)。

票数 10
EN

Stack Overflow用户

发布于 2011-07-16 04:10:08

另请参阅http://developer.android.com/guide/developing/debugging/ddms.html#profiling

如果有帮助,您可以使用Debug API在本地代码区域启用性能分析。这样,在分析跟踪时,例如在traceview中,您可以减少冗长。有关示例,请参阅http://macgyverdev.blogspot.com/2011/07/profiling-android-application-tutorial.html

以及有关如何转换DDMS堆转储的更多详细信息,以便您可以在Eclipse Memory Analyzer中查看它们,并通过dominator树工具找到泄漏的对象:http://macgyverdev.blogspot.com/2011/11/android-track-down-memory-leaks.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3112671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档