许多帖子都谈到了 Android 堆大小,到目前为止我发现最大堆大小的唯一共同点是它至少为 16MB,但这是自 API 3 以来的限制。为了使用更多内存,人们会建议使用 NDK 或任何超出“正常”Android 开发的东西。
是否有任何 Android 版本要求设备具有更大的堆大小,以便我可以开始假设更大的堆大小并不再在内存上如此便宜?
是否还对清单内的大堆标志(来自 API 11 - 蜂巢)有要求,或者是设备甚至可能忽略它的模糊请求?
只是这些年来 Android 硬件已经进步了很多,但即使现在设备已经拥有超过 1GB 的 RAM,我们仍然需要如此便宜的内存。奇怪的是,我们不能要求操作系统提供特定数量的堆大小并承诺我们不会再使用它。
好吧,我终于找到答案了(感谢这个帖子 https://stackoverflow.com/a/16111924/878126) :
所有版本的 Android(包括 5)的最低限度是 16MB。
每个 Android 版本的要求可以在这里阅读:
http://source.android.com/compatibility/downloads.html 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
- 128MB:小/正常,xxhdpi,或大,xhdpi
- 192MB:小/正常,560dpi,或大,400dpi,或 xlarge,xhdpi。
- 256MB:小/正常,xxxhdpi,或大,xxhdpi
- 288MB:400dpi 超大
- 384MB:560dpi 的大型,或 xxhdpi 的超大
- 512MB:大,xxxhdpi
- 576MB:超大,560dpi
- 768MB:xlarge,xxxhdpi
我找不到版本 3.x 的最小堆大小,但它可能与 4.0.3 相同。
对于 2.1 - 2.3 ,最小堆大小为:
屏幕分类为中级或中级的设备实现
低密度必须配置 Dalvik 分配至少 16MB 内存
到每个应用程序。屏幕的设备实现分类为
高密度或超高密度必须配置 Dalvik 来分配
每个应用程序至少有 24MB 内存。请注意该设备
实现可能会分配比这些数字更多的内存。
meaning:
- 中屏或 ldpi - 16MB
- hdpi 或 xhdpi - 24MB
我找不到版本 1.6 的最小堆大小,但它可能与 2.1 相同。
另外,我不知道每个 android 版本(自 3.0 起)的大堆标志应该做什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)