有没有人知道安卓手机的堆大小是根据操作系统版本中设置的常量值,还是手机制造商可以决定这个设置?
堆大小是否与手机上的RAM数量成比例?
我只找到一些文章,其中人们说应用程序的堆大小为16M。然而,这些文章有点过时了。从我所看到的,例如,在某个特定型号上,堆大小会从约20M变化到24M。这款手机有768M的RAM。
有没有人知道安卓手机的堆大小是根据操作系统版本中设置的常量值,还是手机制造商可以决定这个设置?
堆大小是否与手机上的RAM数量成比例?
我只找到一些文章,其中人们说应用程序的堆大小为16M。然而,这些文章有点过时了。从我所看到的,例如,在某个特定型号上,堆大小会从约20M变化到24M。这款手机有768M的RAM。
以下是从 build.prop 文件中提取的更多设备信息(通过 adb -d pull /system/build.prop 命令获取):
手机(Android 版本):
平板电脑(Android 版本):
android:largeHeap="true"
似乎将可用堆空间从“heapgrowthlimit”值增加到“heapsize”值。但这会因设备而异。 - dokkaebi请问在Android手机上堆大小是根据操作系统版本设置的常量值还是手机制造商可以自行决定的设置?
从技术上讲,这是由手机制造商自行决定的设置。Android是开源的。我不记得兼容性定义文档中有说明堆大小要求,但我最近没有查看过。
堆大小是否与手机上的RAM数量成比例?
不是,它往往更基于屏幕分辨率,因为高分辨率屏幕往往需要操作更大的位图,所以谷歌会提出堆大小建议,希望设备制造商能够遵守。
我只找到了一些文章说应用程序的堆大小是16M。
在 StackOverflow 上搜索 [android] "heap size"
会出现 这个答案。
不仅是手机生产商,任何创建Android操作系统版本的人都可以根据其设备的具体要求指定允许的最大堆大小。一些Android root,例如CyanogenMod,甚至允许用户将堆大小自行设置。
您可以使用该方法检测所允许的最大堆大小
Runtime.getRuntime().maxMemory();
关于此主题的附加信息请点击此处。
如果您的应用程序通常需要超过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
您可以使用以下代码检查最大虚拟机堆大小:
getprop dalvik.vm.heapsize
在Android终端(如connectbot或adb shell等)上,可以通过重新挂载为读写模式并在build.prop文件中设置堆大小来进行操作。(确保已安装recovery,以便在意外将其设置得太小而无法启动时可以重新设置它)。
这些文档中还有其他Android 2.x、4.x、5.x和6版本的表格(请参见上面的CDD链接)。
请参考此Google链接,以轻松查找特定设备的屏幕密度等信息: https://design.google.com/devices/
应用程序允许使用的“VM预算”因设备而异。平板电脑通常比手机允许更大的预算。
以下是我找到的各种设备的VM预算大小。
(注意:如果您发现不同,请告诉我)
这些数据对我来说是有效的。 选择模拟器平板电视 Android RAM 1536MB VM HEAP 16MB 内部存储 800MB Studio - 管理 100