如何修改网站后台登陆入口路劲,建设银行网站登录入口,微信公众平台官网小程序,网站的营销推广Android为每个应用分配多少内存
Android出厂后#xff0c;java虚拟机对单个应用的最大内存分配就确定下来了#xff0c;超出这个值就会OOM。这个属性值是定义在/system/build.prop文件中. 例如#xff0c;如下参数
dalvik.vm.heapstartsize8m #起始分配内存
dalvik.vm.…Android为每个应用分配多少内存
Android出厂后java虚拟机对单个应用的最大内存分配就确定下来了超出这个值就会OOM。这个属性值是定义在/system/build.prop文件中. 例如如下参数
dalvik.vm.heapstartsize8m #起始分配内存
dalvik.vm.heapgrowthlimit192m #一般情况app申请的最大内存
dalvik.vm.heapsize512m #设置largeheap时App可用的最大内存dalvik.vm.heaptargetutilization0.75 #GC相关
dalvik.vm.heapminfree512k
dalvik.vm.heapmaxfree8m以上内存数据的理解如下
初始内存大小heapstartsize 虚拟机的内存并不是一次就分配完成的每次应用打开先分配一个初始值随着后续需要不断扩大内存单个进程内存限定heapgrowthlimit 表示单个进程内存最大值超出就会报OOM。仅仅针对dalvik堆不包括native堆单个虚拟机或单个进程可用的最大内存heapsize 与上面单个进程内存限定区别是当应用配置为大内存时manifest配置可以使用的内存会突破单个进程内存限定达到最大内存。
配置使用最大内存在menifest添加配置即可如下
application...android:largeHeaptrue......
/application针对不同手机获取app内存信息可通过adb命令
$adb shell getprop dalvik.vm.heapstartsize #初始内存大小$adb shell getprop dalvik.vm.heapgrowthlimit #单个进程内存限定$adb shell getprop dalvik.vm.heapsize #最大内存在代码中获取可使用的最大内存
private fun appMemInfo() {val maxMemory Runtime.getRuntime().maxMemory() //该应用最大占有内存设置了largeheap该值会变大val freeMemory Runtime.getRuntime().freeMemory() //空余的内存该值会变动例如gc操作Log.i(memInfo, --------memTotal${maxMemory shr 20}, memFree${freeMemory shr 20}) //shr 20是转换为M,方便查看
}注意dalvik内存不含nativeHeap. 总结dalvik内存不含nativeHeap.单个进程能使用的最大内存为 heapgrowthlimit, 不同厂商和机型可能不一样。通过在Menifest配置largeHeap可以使用更大的内存, 即heapsize值。 系统内存
如果要获取手机的总内存可以使用如下方法
private fun sysMemInfo() {val am getSystemService(Context.ACTIVITY_SERVICE) as ActivityManagerval memoryInfo ActivityManager.MemoryInfo()am.getMemoryInfo(memoryInfo)val availMem memoryInfo.availMem //系统可用内存val totalMem memoryInfo.totalMem //系统总内存val threshold memoryInfo.threshold //低内存阈值当可用内存小于该值时系统处于低内存允许val lowMemory memoryInfo.lowMemory //系统是否低内存运行Log.i(memInfo, --------availMem${availMem shr 20}, totalMem${totalMem shr 20}, threshold${threshold shr 20}, isLowMem${lowMemory})val memoryMax am.memoryClass //对应于 dalvik.vm.heapgrowthlimitval largeMemoryClass am.largeMemoryClass //对应于 dalvik.vm.heapsizeLog.i(memInfo, --------memMax${memoryMax}, largeMax${am.largeMemoryClass})
}参考资料
Android为每个应用分配多少内存如何进行性能调优