我的应用在设备上占用了250MB的内存。当我执行堆转储并分析它时,它显示堆大小约为7MB。

3
有没有其他的内存被使用,但在堆转储中没有显示出来呢?我正在使用Eclipse上的Memory Analyzer。首先,我通过DDMS转储了堆,并由Memory Analyzer选择。它只显示堆的大小为7MB,直方图基本上告诉我一切都很好。然而,我在设备上下载了几个内存监视应用程序,它们都说我的应用程序占用了250MB的内存并且不断增长。
我该如何找到它所占用的如此多内存的原因呢?
(附图)

你认为你的应用程序中使用了大尺寸的图片吗? - Ketan Bhavsar
@ketan 是的,我有一个带有图像的列表视图。它们相当大,大约有600像素的宽度和高度。 - 124697
堆是内存的一部分。在小型应用程序中,它可能只占分配的所有内存的一小部分。 - Peter Lawrey
1个回答

4

记忆测量应用程序并不值得太多,因为引用Dianne Hackborn的话来说:

请注意,像Linux这样的现代操作系统上的内存使用是一个非常复杂和难以理解的领域。事实上,你正确解释任何你得到的数字的机会非常低。

话虽如此,您可以使用她的答案中概述的技术来尝试更好地掌握这些工具所声称的内容以及它是否真的是一个问题。

还有:

  • 如果您有多个进程,请记住DDMS的堆转储仅适用于单个进程

  • 如果您正在使用NDK进行本地开发,则NDK分配不属于托管堆,并因此不包括在堆转储中


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接