代码如下
public class RuntimeDemo01 {
public static void main(String args[]){
Runtime run=Runtime.getRuntime();
System.out.println("JVM最大内存量:"
+run.maxMemory());
System.out.println("JVM空闲内存量:"
+run.freeMemory());
String str="Hello"+"World"+"!"
+"\t"+"Welcome"+"To"
+"MLDN"+"~";
System.out.println(str);
for(int x=0;x<1000;x++){
str+=x;
}
System.out.println("操作String之后的,JVM空闲内存量:"
+run.freeMemory());
run.gc();
System.out.println("垃圾回收之后的,JVM空闲内存量:"
+run.freeMemory());
}
}
结果如下
JVM最大内存量:4242538496
JVM空闲内存量:262854328
HelloWorld! WelcomeToMLDN~
操作String之后的,JVM空闲内存量:261216344
垃圾回收之后的,JVM空闲内存量:19946576
因为gc是个异步方法,调用它只是通知后台可以开始清理了,程序并不等待清理完成
否则你调用gc应该会有明显的卡顿
1、调用gc()不一定就会释放内存
2、后面的值更大说明在这两行代码有申请新的内存空间