一个关于Runtime中的freeMemory()的奇怪输出解决办法

一个关于Runtime中的freeMemory()的奇怪输出
public class Demo2 {

public static void main(String[] args) {
Runtime run=Runtime.getRuntime();
System.out.println("1.空闲的内存空间"+run.freeMemory());
StringBuffer buf=new StringBuffer("");
for(int i=0;i<5000000;i++){
buf=buf.append(i);
}
System.out.println("2.空闲的内存空间"+run.freeMemory());
run.gc();
System.out.println("3.空闲的内存空间"+run.freeMemory());
}
}

------解决思路----------------------
这很正常,虚拟机的内存不是说一上来就给你分多少,然后就不变了。是会根据程序的需要变化的。
你可以run.totalMemory();看看总内存肯定也是在变化的啊。
------解决思路----------------------
total 是 JVM 申请来的,free 当然就是还没用掉的。

不要把 total 当成你的电脑的所有内存就是了。