有没有人知道Android手机上的堆大小是否是根据操作系统版本中设置的常量值,或者这是电话制作者可以决定的设置?
堆大小是否与手机上的RAM量成正比?
我只找到了人们说应用程序的堆大小为16M的文章.但是,这些文章有点陈旧.从我看来,作为一个例子,在一个特定型号上,堆大小从大约20M到24M不等.这款手机拥有768M的RAM.
spa*_*ist 122
从build.prop文件中提取的更多设备信息(adb -d pull /system/build.prop):
手机(安卓版):
平板电脑(Android版):
Car*_*arl 20
不仅手机制造商,而且任何创建Android OS版本的人都可以根据其设备的特定要求指定允许的最大堆大小.一些Android根源,例如CyanogenMod,甚至允许用户自己选择堆大小作为设置.
您可以使用该方法检测允许的最大堆大小
Runtime.getRuntime().maxMemory();
Run Code Online (Sandbox Code Playgroud)
有关此主题的更多信息,请参见此处.
如果您的应用程序通常需要超过16MB的堆,建议的方法是在清单中设置最低操作系统版本级别,以确保绝大多数下载您的应用程序的人至少具有您需要的数量,然后找到一种降低功能的方法,可以根据需要降低堆需求,降低到16MB的基本级别,适用于少量通过筛子的最佳堆数的用户.
以下是一些数字,显示了手机RAM与操作系统版本的关联(基于当前的,非原创的操作系统).我相信拥有至少1GB RAM的手机几乎总是有超过16MB的堆.请注意,此处的百分比是针对支持指定内存的手机型号数量,而不是使用的手机总数,这可能与某些型号相差甚远.这些数字是通过将输入插入下面的手机取景器(包括1500个Android手机型号)获得的,所以只有大概数字:http://www.gsmarena.com/search.php3
按当前操作系统版本(不是发布版本)的具有至少1GB RAM 的手机型号的百分比:
Phones running Percent of models having at least 1GB of RAM Percentage of all models
4.4 and up 100 percent 1.5
4.3 and up 100 percent 2.9
4.2.x and up 74 percent 18.7
4.1.x and up 71 percent 37
4.0 and up 62 percent 60
2.3.x and up 57 percent 71
2.2 and up 44 percent 93
2.1 and up 44 percent 97
ALL OS VERSIONS: 41.5 percent 100
Run Code Online (Sandbox Code Playgroud)
NoB*_*ugs 11
您应该能够使用以下方法检查max vm heapsize:
getprop dalvik.vm.heapsize
Run Code Online (Sandbox Code Playgroud)
在Android终端(connectbot或adb shell等).可以重新安装读写并在build.prop文件中设置堆大小.(确保已安装恢复,因此如果您不小心将其重新设置,则可以重新设置它,它将无法启动).
允许应用程序使用的"VM预算"因设备而异.平板电脑通常允许比手机更大的预算.
以下是我为各种设备找到的一些VM预算大小.
(注意:如果您发现不同,请告诉我)
实际上有一个定义的最小应用程序内存取决于屏幕大小和密度:
移动设备通常具有受限的系统资源.Android设备可以为单个应用程序提供少至16MB的内存.Android兼容性定义文档(CDD),第3.7节.虚拟机兼容性为各种屏幕尺寸和密度提供所需的最小应用程序内存.应优化应用程序以在此最小内存限制下执行.但是,请记住,许多设备配置了更高的限制.
引用自:http://developer.android.com/training/displaying-bitmaps/index.html
但正如其他人所说,每个设备制造商决定设备的实际价值,因此它可能大于此(但不小于).
上面提到的兼容性定义文档(CDD)列出了每个版本的android的最低要求:https: //source.android.com/compatibility/cdd.html
对于最新版本的Android,有一个html verison可用,我们可以直接链接到那里的运行时内存部分:https: //source.android.com/compatibility/android-cdd.html#3_7_runtime_compatibility
对于Android 2.3:
屏幕分类为中密度或低密度的设备实现必须配置Dalvik 为每个应用程序分配至少16MB的内存.屏幕分类为高密度或超高密度的设备实现 必须配置Dalvik 为每个应用程序分配 至少24MB的内存.请注意,设备实现可以分配比这些数字更多的内存.
对于现代版本,有一个表格,它取决于屏幕密度等:
对于Android 4.2,该表中的示例行:
小/正常/大尺寸和xhdpi密度:64MB
对于Android 6,提取:
小/正常xhdpi:80MB
小/正常xxhdpi:128MB
小/正常xxxhdpi:256MB
在这些文档中还有其他Android 2.x,4.x,5.x和6版本的表格(参见上面的CDD链接).
请参阅此谷歌链接,轻松查找特定设备的屏幕密度等:https: //design.google.com/devices/
| 归档时间: |
|
| 查看次数: |
85625 次 |
| 最近记录: |