我们可以依靠我们的Android应用程序获取一定数量的内存,还是在手机型号或操作系统版本之间有所不同?
例如,我有一个内存缓存,我已将其限制设置为5 MB。如果在一台设备上,我的应用程序只能获得8 MB的内存,而在另一台设备上,24 MB,我想调整内存缓存的上限,以利用更多或更少的内存。
有没有办法解决这个问题,数量是否会有所不同?
答案 0 :(得分:19)
是的,最大堆大小因设备而异。您可以通过调用getMemoryClass()
来检查设备的每个应用程序的大致内存类别。
返回当前设备的近似每应用程序内存类。这可以让您了解应该对应用程序施加的内存限制有多难,以使整个系统最佳运行。返回值以兆字节为单位;基线Android内存类是16(恰好是这些设备的Java堆限制);一些具有更多内存的设备可能会返回24或更高的数字。
更改应用堆大小的唯一内置方法是在android:largeHeap="true"
中设置AndroidManifest.xml
。这通常会将堆大小从48增加到128.请记住,此方法仅适用于3.x平板电脑。否则,你需要一个root设备,这显然不是你想要作为开发人员所依赖的东西。
答案 1 :(得分:0)
它可能对你有帮助
16 MB是给予任何给定的Android应用程序的最大内存限制。一些第二代手机将为每个进程返回24 MB内存甚至更多。
What is the maximum memory limit given for each process or application in android?