最近在查看android studio的monitor发现了一个十分有趣的现象,就是android monitor中内存的大小是随着程序的运行一直在不断增加的:
可以看到在memory monitor中存在着free memory和alloc momory,随着程序的不断跳转执行,其大小在不断的增加,那么一个apk程序的内存大小限制是怎样的呢?
这里我选取了两款手机红米note2和moto x手机,并分别在其中执行
Runtime.getRuntime.maxMemory()
Runtime.getRuntime.totalMemory()
Runtime.getRuntime.freeMemory()
moto x手机:
程序A:
totalMemory:63043244byte 即60M
maxMemory:536870912byte 即512M
freeMemory:5636240byte 即5.3M
程序B
totalMemory:28127332byte 即26M
maxMemory:201326592byte 即192M
freeMemory:10417532byte 即10M
red MI手机:
程序A
totalMemory:62739114byte 即60M
maxMemory:268435456byte 即256M
freeMemory:5805424byte 即5.5M
程序B
totalmemory:30193786byte 即29M
maxMemory:134217728byte 即127M
freeMemory:11297114byte 即10.7M
总结:
可以看到的是不同的程序在不同的手机中macMemory的值是不一致的,而totalmemory和freememory的值随着程序的执行在动态的变化。
totalmemory:当前JVM进程已经申请到的内存大小
freeMemory:当前JVM进程已经申请到的内存大小中空闲状态的大小
maxMemory:当前JVM进程可以申请到的总得内存大小
不同的应用程序无论重新安装与否,在同一手机上其macMemory方法的值都是固定的
参考: http://blog.csdn.net/wgw335363240/article/details/8878644