为什么一个空的Android ICS应用程序几乎占据了所有堆的大小?

为什么一个空的Android ICS应用程序几乎占据了所有堆的大小?,android,heap,heap-memory,Android,Heap,Heap Memory,我正在Android下为SDK>=8开发一个游戏应用程序。我总是在安卓2.2手机上测试,从来没有出现过问题。当我移动到安装了ICS的Nexus手机时,我开始出现堆内存分配问题。我尝试删除应用程序中的所有内容,以查看在Eclipse下使用DDMS和MAT时出现内存泄漏问题或奇怪的分配,直到我决定只启动一个空活动,不再执行任何操作 在Android 2.2下,启动时的堆大小约为2.0MB,而在Android 4.1下,堆大小约为11MB。为什么会有如此大的差异 此外,当我在ICS上播放堆大小的应用程

我正在Android下为SDK>=8开发一个游戏应用程序。我总是在安卓2.2手机上测试,从来没有出现过问题。当我移动到安装了ICS的Nexus手机时,我开始出现堆内存分配问题。我尝试删除应用程序中的所有内容,以查看在Eclipse下使用DDMS和MAT时出现内存泄漏问题或奇怪的分配,直到我决定只启动一个空活动,不再执行任何操作

在Android 2.2下,启动时的堆大小约为2.0MB,而在Android 4.1下,堆大小约为11MB。为什么会有如此大的差异

此外,当我在ICS上播放堆大小的应用程序时,垃圾收集器很快开始释放内存,整个应用程序变得很慢,FPS非常低。在安卓2.2下,一切都非常顺利和干净,没有任何问题


有人能告诉我这两个系统的区别在哪里吗?我不想谈论我的应用程序实现,我已经花了两周时间优化代码、内存分配和保留以及其他一切。不能做更多了,但我想知道在应用程序启动时,所有的内存都去了哪里。另外,ICS似乎需要更多的内存来加载和保留位图和绘图。好的,我可能会迟到,但我找到了你和我问题的根源

在Android 3.0之前,不确定这是否在整个1.x/2.x系列中,所有位图相关内存都没有存储在堆中。因此,在3.0中,他们开始查找堆上的所有内容。我不确定为什么一个空的应用程序占用11MB,我只能猜测它与应用程序中使用的默认Android位图有关

现在还有另一个问题:在Android的早期版本中,只有一个“drawable”文件夹,而不是“drawable hdpi”、“drawable mdpi”等等。。。文件夹出于某种原因,从“drawable”文件夹加载图像时,会占用大量空间。解决方案是将不同分辨率的图像添加到所有可绘制的Xdpi中,其中X是l、m、h或xh文件夹。它将我的起始堆大小从26MB左右减少到16MB左右。即使不调整它们的大小,只是将它们复制粘贴到文件夹中,也会导致位图大小发生相当大的变化

我希望我能通过发布这篇文章来帮助一些人


-好吧,我可能会迟到,但我找到了你和我问题的根源

在Android 3.0之前,不确定这是否在整个1.x/2.x系列中,所有位图相关内存都没有存储在堆中。因此,在3.0中,他们开始查找堆上的所有内容。我不确定为什么一个空的应用程序占用11MB,我只能猜测它与应用程序中使用的默认Android位图有关

现在还有另一个问题:在Android的早期版本中,只有一个“drawable”文件夹,而不是“drawable hdpi”、“drawable mdpi”等等。。。文件夹出于某种原因,从“drawable”文件夹加载图像时,会占用大量空间。解决方案是将不同分辨率的图像添加到所有可绘制的Xdpi中,其中X是l、m、h或xh文件夹。它将我的起始堆大小从26MB左右减少到16MB左右。即使不调整它们的大小,只是将它们复制粘贴到文件夹中,也会导致位图大小发生相当大的变化

我希望我能通过发布这篇文章来帮助一些人


-我也面临同样的问题。这个问题解决了吗?没有。这仍然是一个悬而未决的问题,我也面临着同样的问题。这个问题解决了吗?没有。这仍然是一个悬而未决的问题。