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

ary*_*axt 46 eclipse android memoryanalyzer heap-dump

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

Rob*_*ond 40

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

  • 您省略了Mathias的答案中提到的关键步骤:"dalvik VM的堆转储需要使用Android SDK工具目录中的hprof-conv.exe转换器工具转换为常规hprof格式." (6认同)
  • 我自己想通了.文件==>另存为,然后在内存分析器中打开文件 (2认同)

Mat*_*adt 10

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

除了DDMS,你还可以通过你的应用程序/代码(只有较新的SDK)创建hprof Debug.dumpHprofData(...)

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

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