Android:Eclipse MAT 似乎没有显示我的应用程序的所有对象

2023-11-30

我通过插入语句创建了一个 hprof 文件Debug.dumpHprofData("/sdcard/myapp.hprof");在我的应用程序的代码中;然后,我通过 hprof-conv 运行 hprof 文件,并在 Eclipse 中打开转换后的文件。

根据 MA​​T“备忘单”的建议,我通过转到“泄漏识别 -> 组件报告”输入“com.prepbgg.*”并点击“完成”,获得了应用程序内存使用情况的分析。

我知道我的应用程序正在消耗大量内存:特别是在我调用 dumpHprofData 的阶段,它有一个 1 兆像素的位图对象和一个必须消耗数百 KB 的画布。 (我还怀疑它正在泄漏大量内存,因为屏幕旋转几次后性能会严重下降。)

然而,com.prepbgg.* 的组件报告显示总内存仅为 38.7KB。直方图视图显示 android.graphics.Bitmap(大概这是包括我在内的所有应用程序的总数)404 个对象和浅堆 12,928 个。那是 12,928 字节吗?

显然,我的应用程序消耗了超过 38.7KB,位图远超过 12,928 字节。我哪里错了?如何查看我的应用消耗的总内存?


位图的大部分空间将位于本机堆上。请参阅位图的来源:它有七个字段。假设每个字段是四个字节(对于引用和整数来说几乎确定,对于布尔值来说也是合理的)为对象头添加额外的四个字节,并且:

(7*4 + 4) * 404 = 12928

我不认为有任何简单的方法可以在不运行您自己的构建的情况下检查本机堆。

你可以询问分配了多少东西:http://developer.android.com/reference/android/os/Debug.html#getNativeHeapAllocationSize()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:Eclipse MAT 似乎没有显示我的应用程序的所有对象 的相关文章

随机推荐