先看代码吧
public class GC_Demo {
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
System.out.println(runtime.totalMemory() / 1024 / 1024);
for (int i = 0; i < 100; i++) {
new Person(i, "a");
}
System.gc();
System.out.println(runtime.totalMemory() / 1024 / 1024);
}
}
class Person {
private int age;
private String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public void finalize() throws Throwable {
System.out.println("开始垃圾回收...");
}
}
结果:
119
119
开始垃圾回收...
开始垃圾回收...
开始垃圾回收...
开始垃圾回收...
和网上看的其他人说的一样,垃圾回收方法只是通知JVM,具体执行并不确定,在这里并没有对每个对象进行垃圾回收。