Android 为什么安卓4.0/冰淇淋三明治会分配这么多堆内存?

Android 为什么安卓4.0/冰淇淋三明治会分配这么多堆内存?,android,memory,heap,android-4.0-ice-cream-sandwich,Android,Memory,Heap,Android 4.0 Ice Cream Sandwich,我注意到在我的Galaxy Nexus上,android.content.res.Resources分配了大约11MB的内存。我在使用DDMS和“Dump HPROF file”选项分析事物的过程中发现了这一点。因此,我花了两个小时试图确定分配是否是由于我的代码或支持库中的某些内容造成的。我删除了我所有的数据、大量的类和所有的库,没有看到任何变化。在活动的onCreate()方法的开头在我的代码中放置一个断点后,它表明11MB的分配已经存在 在彻底弄糊涂之后,我决定连接运行CM7的根Nook C

我注意到在我的Galaxy Nexus上,
android.content.res.Resources
分配了大约11MB的内存。我在使用DDMS和“
Dump HPROF file
”选项分析事物的过程中发现了这一点。因此,我花了两个小时试图确定分配是否是由于我的代码或支持库中的某些内容造成的。我删除了我所有的数据、大量的类和所有的库,没有看到任何变化。在活动的
onCreate()
方法的开头在我的代码中放置一个断点后,它表明11MB的分配已经存在

在彻底弄糊涂之后,我决定连接运行CM7的根Nook Color,查看它报告的同一应用程序的初始内存使用情况。MAT报告的最坏情况内存“问题嫌疑犯”仅为896KB

那顶重吗?我是不是遗漏了什么?据我所知,我的应用程序运行正常,但堆使用率表明97%已满,这让我担心潜在的故障


如果有帮助的话,MAT指出占用所有内存的主要对象是位图、
BitmapDrawables
NinePatchDrawables
。我不明白这些分配是从哪里来的。

Pre Honeycomb(嗯,也许你可以尝试用最少的资源开发一个新的应用程序,看看它的使用量有多大。我已经尝试了一下,在某些情况下,在硬件加速打开且兼容库链接的情况下,GN上的可用堆可能少于10%。