Runtime r = Runtime.getRuntime();
long maxMemory = r.maxMemory();
long totalMemory = r.totalMemory();
long freeMemory = r.freeMemory();
// Xmx 最大值,,Xms 最小值,
maxMemory 是java虚拟机从操作系统分配的最大内存值,单位是字节,
如果没有设置-Xmx,则最大值(默认)是64 * 1024*1024, 也就是64M,如果设置了Xmx=160M,则返回的是160*1024*1024;
totalMemory指的是java虚拟机当前使用了多少内存,单位是字节,
如果没有设置Xms,则使用多少返回多少,
如果设置了Xms=100M,返回值大于等于100M,因为系统启动的时候就给虚拟机分配了100M,系统在运行的时候可能加载的内容笔记多,100M不够用了,又申请了32M,这时候返回值就是32*1024*1024,
最大不会超过设置的-Xmx的值。
freeMemory指的是java虚拟机分配到的内存中未使用的部分,单位是字节
比如说虚拟机分配的内存不够用了,还需要1M的空间,那么去操作系统申请内存的时候肯定不会申请1M的,而是申请2M或者4M.........,
假如找os申请了4M,但是自己只用了1M,这时候调用freeMemory的值是3*1024*1024,
刚开始的时候这个值是比较大的,比如说你设置了最小值是100M,系统刚开始启动的时候可能就用了60M,这个时候freeMemory的值是40M,随着应用程序的使用,剩余内存会逐渐减少的,可能只剩下30M..20M
过一会100M不够用了,又申请了8M,但是只用了3M,这时候freeMemory的值就是5M。