7

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

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

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

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

4

1 回答 1

12

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

所有 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 的大,或使用 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 的内存。请注意,设备实现可能分配比这些数字更多的内存。

意义:

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

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

另外,我不知道大堆标志应该为每个 android 版本(自 3.0 起)做什么。

于 2013-07-21T07:42:51.343 回答