安卓版本中是否有最小堆大小限制?

7
许多文章都谈到了Android堆大小,迄今为止我发现唯一关于最大堆大小的共同点是它至少为16MB,但这个限制从API 3开始就存在了。对于使用更多内存,人们建议使用NDK或任何超出“正常”Android开发范畴的东西。
是否有任何要求设备具有更大堆大小的Android版本,以便我可以开始假设更大的堆并停止在内存上节省成本?
还有一个关于清单中的大堆标志(从API 11 - honeycomb)的要求吗,或者它是一个模糊的请求,甚至可能被设备忽略?
只是因为Android硬件在这些年里已经得到了很大的改进,我们仍然需要在内存上那么省钱,即使现在的设备拥有1GB以上的内存。而且奇怪的是,我们不能向操作系统请求特定数量的堆大小,并承诺不再使用任何更多内存。
1个回答

12

好的,我终于找到了答案(感谢这篇文章):

所有版本的 Android (包括 5) 的最低要求是 16MB。

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

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

你可以通过打开 CDD 文件并搜索“Runtime Compatibility”(或旧版的“Virtual Machine Compatibility”)来了解它们。此外,你可以通过搜索“Memory and Storage”来查找最小 RAM 要求,但我认为这仅适用于系统本身的需求。

例如,在 4.0.3 - 5 上的最小堆大小如下:

  • 16MB:ldpi/mdpi 的小/普通,或 ldpi 的大
  • 32MB:tvhdpi/hdpi 和 mdpi 的小/普通,或大的 mdpi
  • 64MB:xhdpi 的小/普通,或 tvdpi/hdpi 的大,或 mdpi 的 xlarge。
  • 96MB:400dpi 的小/普通,或 tvhdpi/hdpi 的 xlarge
  • 128MB:xxhdpi 的小/普通,或 xhdpi 的大
  • 192MB:560dpi 的小/普通,或 400dpi 的大,或 xhdpi 的 xlarge。
  • 256MB:xxxhdpi 的小/普通,或 xxhdpi 的大
  • 288MB:400dpi 的 xlarge
  • 384MB:560dpi 的大,或 xxhdpi 的 xlarge
  • 512MB:xxxhdpi 的大
  • 576MB:560dpi 的 xlarge
  • 768MB:xxxhdpi 的 xlarge

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

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

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

意思是:

  • 中等屏幕或低密度-16MB
  • 高密度或超高密度-24MB

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

此外,我无法确定自Android 3.0以来每个版本的large-heap标志应该执行何种操作。


点击此处查看确切部分。 - Christopher Perry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接