2013-01-17 49 views
5

很多帖子都讨论过Android堆大小,到目前为止,我发现最大堆大小的唯一常见事情是它至少有16MB,但这是API 3以来的限制。记忆,人们会建议使用NDK或任何超出“正常”Android开发的东西。Android版本是否有最小的堆大小?

是否有任何Android设备版本需要设备具有较大的堆大小,以便我可以开始假设一个较大的并且不再在内存上如此便宜?

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

这些年来Android的硬件已经有了很大的改进,但即使设备的RAM超过1GB,我们仍然需要在内存上如此便宜。奇怪的是,我们无法从操作系统要求我们获得特定数量的堆大小,并承诺我们不会再使用这种堆。

回答

9

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

裸最小的为Android的所有版本(包括5),为16MB。

每个android的版本的要求,可约在这里读到:

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

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

所以,例如,在4.0.3 - 5最小堆大小是:

  • 16MB:小/正常用LDPI/MDPI,或用大LDPI
  • 32MB:小/正常用tvhdpi/hdpi,或与mdpi大
  • 64MB:小/正常与xhdpi,或大与tvdpi/hdpi,或xlarge与mdpi。
  • 96MB:小/正常与400dpi的,或XLARGE与tvhdpi/HDPI
  • 128MB:小/正常与xxhdpi,或大与xhdpi
  • 192MB:小/正常与560dpi,或大以400dpi的,或XLARGE与xhdpi。
  • 256MB:小/正常与xxxhdpi,或大与xxhdpi
  • 288MB:XLARGE与400dpi的
  • 384MB:大以560dpi,或者XLARGE与xxhdpi
  • 512MB:大与xxxhdpi
  • 576MB:XLARGE用560dpi
  • 768MB:XLARGE与xxxhdpi

我找不到版本3.x最小堆大小,但它可能是一样的4.0.3。

为2.1-2。如图3所示,最小堆大小是:

设备实现以分类为中等或低 密度屏幕必须配置的Dalvik到存储器 至少16MB分配给每个应用程序。将屏幕分类为 高密度或超高密度的设备实现必须配置Dalvik为每个应用程序分配至少24MB内存的 。请注意,设备 可能会比这些数字分配更多内存。

含义:

  • 媒体屏幕或LDPI - 16MB
  • 华电国际或xhdpi - 24MB

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

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

+0

链接到确切的部分[这里](http://static.googleusercontent.com/media/source.android.com/en/us/compatibility/4.4/android-4.4-cdd.pdf) –

+0

@ChristopherPerry true,但是这个链接会随着版本的变化而改变...... –