totalMemory():返回Java虚拟机中的内存总量。maxMemory():返回Java虚拟机试图使用的最大内存量。freeMemory():返回Java虚拟机中的空闲内存量。这是API的解释。我写了这么一段代码p...
totalMemory() :返回 Java 虚拟机中的内存总量。
maxMemory() :返回 Java 虚拟机试图使用的最大内存量。
freeMemory() :返回 Java 虚拟机中的空闲内存量。
这是API的解释。
我写了这么一段代码
public class RuntimeDemo
{
public static void main(String[] args) throws Exception
{
//构造方法被私有化了。
Runtime myRun = Runtime.getRuntime();
System.out.println("已用内存" + myRun.totalMemory());
System.out.println("最大内存" + myRun.maxMemory());
System.out.println("可用内存" + myRun.freeMemory());
String i = "";
long start = System.currentTimeMillis();
System.out.println("浪费内存中.....");
for(int j = 0;j < 10000;j++)
{
i += j;
}
long end = System.currentTimeMillis();
System.out.println("执行此程序总共花费了" + ( end - start )+ "毫秒");
System.out.println("已用内存" + myRun.totalMemory());
System.out.println("最大内存" + myRun.maxMemory());
System.out.println("可用内存" + myRun.freeMemory());
myRun.gc();
System.out.println("清理垃圾后");
System.out.println("已用内存" + myRun.totalMemory());
System.out.println("最大内存" + myRun.maxMemory());
System.out.println("可用内存" + myRun.freeMemory());
}
}
下面是打印的结果
-----------------------
已用内存31064064
最大内存460455936
可用内存30714320
浪费内存中.....
执行此程序总共花费了659毫秒
已用内存193593344
最大内存460455936
可用内存150298760
清理垃圾后
已用内存193724416
最大内存460455936
可用内存192511928
---------------------------
浪费内存后和清理垃圾后的数值究竟是什么???
为什么数值差距如此大?
展开