Android ==>内存分析==> Eclipse内存分析器?
我需要检查我的应用程序内存泄漏,我也需要看到我的应用程序的内存分配。 我下载并安装了eclipse内存分析器,它看起来像第一步是打开一个堆转储。 但是什么是堆转储,我怎样才能创build一个堆转储。 我怎样才能使用这个软件,我做了一些谷歌search,但我找不到任何有用的信息,谢谢
当你debugging你的应用程序时,在Eclipse中打开DDMS 。 在工具栏上有一个堆转储button,您可以使用它来生成堆转储以在Eclipse内存分析器中查看。 这只支持我认为与1.6 +或2.0 + SDK。
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(...)
从您的应用/代码(仅更新的SDK) Debug.dumpHprofData(...)
请注意,在DDMS中,您可以看到您的应用程序正在使用的堆。 它不显示外部资源(如位图)正在分配的本机堆。 不过,在检查内存泄漏时,还需要考虑这些资源。 当原生应用堆和应用堆合计高达16MB / resp。 24MB你会得到一个OOM错误。
您可以通过Debug.getNativHeapAllocatedSize()
来查看已经使用的本地堆(即通过您的应用中的位图Debug.getNativHeapAllocatedSize()
。
另见http://developer.android.com/guide/developing/debugging/ddms.html#profiling
如果有帮助,可以使用debuggingAPI来启用对本地代码区域的分析。 以这种方式,在分析traceview中的痕迹时,就不那么冗长了。 有关示例,请参阅http://macgyverdev.blogspot.com/2011/07/profiling-android-application-tutorial.html 。
有关如何转换DDMS堆转储的更详细的信息,以便您可以在Eclipse Memory Analyzer中查看它们,并通过支配树工具查找您的泄漏对象: http : //macgyverdev.blogspot.com/2011/11/android-track-下内存leaks.html