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

有帮助吗?

解决方案

当您调试应用程序时,打开 DDMS 在日食中。在工具栏上,有一个堆转储按钮,您可以使用该按钮生成堆转储以在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外,您还可以通过应用程序/代码(仅较新的SDK)通过 Debug.dumpHprofData(...)

请注意,在DDMS中,您可以看到应用程序正在使用的堆。它并未显示本机堆,即外部资源(例如位图)正在分配。然而,在检查内存泄漏时,还需要考虑这些资源。当天然和应用程序堆总计高达16MB / resp时。 24MB您将获得OOM错误。

您可以通过 Debug.getNativHeapAllocatedSize().

也看 http://developer.android.com/guide/developing/debugging/ddms.html#profiling

如果有所帮助,您可以使用调试API启用代码本地区域的分析。这样,在分析轨迹中的痕迹时,您的详细性较小。看 http://macgyverdev.blogspot.com/2011/07/profiling-android-application-tutorial.html 举些例子。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top