早期的设备的每个应用的上限为16MB。后来的设备增加到24MB。未来的设备可能会有更多的可用性。
该值反映了设备上可用的物理内存和显示设备的属性(因为能够显示更多颜色的较大屏幕通常需要较大的位图)。
编辑:其他的…
我不久前读了一篇文章,指出垃圾收集分配器本质上是对具有无限内存的机器进行建模。你可以分配尽可能多的,它会照顾细节。 Android主要以这种方式工作你坚持参考你需要的东西,软/弱参考你可能没有的东西,并丢弃对你永远不会再需要的东西的引用。 GC全部排除。
在你特定的情况下,你可以使用软引用来保持内存中不需要的东西,但是如果有足够的空间,那么就要保留。
这开始与位图分开,主要是因为一些早期的设计决策导致了“外部分配”机制。此外,软参考机制需要一些调整 – 初始版本倾向于保留所有内容或丢弃所有内容。
Dalvik堆正在积极发展(参见例如Android 2.3“Gingerbread”上的笔记,其中引入了一个并发GC),因此希望在未来的版本中解决这些问题。
编辑:更新…
4.0“冰淇淋三明治”中的“外部配置”机制消失了。 Bitmaps的像素数据现在存储在Dalvik堆上,避免了早期的烦恼。
最近的设备(例如Nexus 4)将堆大小限制在96MB以上。
从ActivityManager.getMemoryClass()可以获得应用程序内存限制的一般意义,作为“内存类”。 java.lang.Runtime函数maxMemory()可以获得更具体的值。