Android版本的堆大小是否最小?

时间:2013-01-17 09:34:03

标签: android memory-management heap-size

很多帖子都谈到了Android堆大小,到目前为止我发现的最大堆大小唯一常见的是它至少为16MB,但这是自API 3以来的限制。更多的内存,人们会建议使用NDK或任何超出“正常”Android开发的东西。

是否有任何Android版本要求设备具有更大的堆大小,以便我可以开始假设更大的那个并停止在内存上如此便宜?

是否还要求清单中的大堆(来自API 11 - 蜂窝)的标志,或者是设备甚至可能忽略它的模糊请求?

多年来,Android硬件已经有了很大的改进,但我们仍然需要在内存上如此便宜,即使设备现在拥有超过1GB的内存。奇怪的是,我们不能要求操作系统为我们提供特定数量的堆大小,并承诺我们不会再使用它了。

1 个答案:

答案 0 :(得分:10)

好的,我终于找到了答案(感谢this post):

所有版本的android(包括5个)的最小值是16MB。

可以在这里阅读每个Android版本的要求:

http://source.android.com/compatibility/downloads.html

您可以通过打开CDD文件并搜索“运行时兼容性”(或旧版本的“虚拟机兼容性”)来了解它们。此外,您可以通过搜索“内存和存储”找到最低RAM要求,但我认为这只是系统本身的要求。

因此,例如,在4.0.3 - 5上,最小堆大小为:

  • 16MB:ldpi / mdpi小/正常,或ldpi
  • 32MB:使用tvhdpi / hdpi小/正常,或使用mdpi
  • 64MB:小/普通xhdpi,或大tvdpi / hdpi,或xlarge和mdpi。
  • 96MB:400dpi的小/普通,或者带有tvhdpi / hdpi的xlarge
  • 128MB:小/普通xxhdpi,或大xhdpi
  • 192MB:560dpi小/普通,400dpi大或xhdpi xlarge。
  • 256MB:小/普通xxxhdpi,或大xxhdpi
  • 288MB:xlarge with 400dpi
  • 384MB:大于560dpi,或xlarge与xxhdpi
  • 512MB:xxxhdpi大
  • 576MB:xlarge with 560dpi
  • 768MB:xlarhd with xxxhdpi

我找不到版本3.x的最小堆大小,但它可能与4.0.3相同。

对于2.1 - 2.3,最小堆大小为:

  

设备实施,屏幕分类为中型或中型   低密度必须配置Dalvik分配至少16MB的内存   每个应用程序。屏幕分类为的设备实现   高密度或超高密度必须配置Dalvik进行分配   每个应用程序至少有24MB的内存。请注意该设备   实现可以分配比这些数字更多的内存。

含义:

  • 中等屏幕或ldpi - 16MB
  • hdpi或xhdpi - 24MB

我找不到版本1.6的最小堆大小,但它可能与2.1相同。

另外,我无法找出大堆标志应该为每个Android版本做什么(从3.0开始)。