maxMemory()这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存,以字节为单位。
totalMemory()这个方法返回的是java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有内存。
freeMemory()是什在java程序运行的过程的,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,但是java虚拟机100%的情况下是会稍微多挖一点的,这些挖过来而又没有用上的内存,实际上就是 freeMemory(),所以freeMemory()的值一般情况下都是很小的。
例如下面的程序,为了更直观的演示三者的关系,我使用一个for循环去演示:
public void show(View view){
for(int i=0;i<1000;i++){
byte[] bytes=new byte[1024*1024*10];//每次创造10兆
long l = Runtime.getRuntime().maxMemory();
long l1 = Runtime.getRuntime().totalMemory();
long l2 = Runtime.getRuntime().freeMemory();
String availMemStr = getSystemAvaialbeMemorySize();
Log.i("MainActivity", "maxMemory"+formateFileSize(l)+";totalMemory"+formateFileSize(l1)+";freeMmeory"+formateFileSize(l2)+";The Availabel Memory Size is"+availMemStr);
}
}
打印日志如下:
08-08 13:46:17.313 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory12.41 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
08-08 13:46:17.316 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory22.44 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
08-08 13:46:17.320 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory32.45 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
08-08 13:46:17.323 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory32.42 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
08-08 13:46:17.326 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory42.44 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
08-08 13:46:17.329 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory52.46 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
08-08 13:46:17.332 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory62.47 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
08-08 13:46:17.335 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory72.48 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
08-08 13:46:17.338 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory82.50 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
08-08 13:46:17.341 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory92.50 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
08-08 13:46:17.345 8262-8262/green.xi.com.greendaodemo I/MainActivity: maxMemory384 MB;totalMemory103 MB;freeMmeory0 B;The Availabel Memory Size is1.55 GB
.........