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

时间:2010-06-24 18:04:34

标签: android eclipse heap-dump memoryanalyzer

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

3 个答案:

答案 0 :(得分:40)

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

答案 1 :(得分:10)

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

除了DDMS,您还可以通过Debug.dumpHprofData(...)

从您的app / code(仅更新的SDK)创建hprof

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

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

答案 2 :(得分:3)

另见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中查看它们,并通过支配树工具找到泄漏的对象:http://macgyverdev.blogspot.com/2011/11/android-track-down-memory-leaks.html