public class Main {
public static void main(String[] args) throws InterruptedException {
ClassA a = new ClassA();
a = null;
//Runtime.getRuntime().gc();
Thread.sleep(4000);
}
}
public class ClassA {
@Override
public void finalize(){
System.out.println("cleaned");
}
}
使用上面的代码 finalize() 永远不会执行。没有任何内容打印到控制台。当从 gc() 中删除注释时,finalize() 会执行,并且“cleaned”会打印到控制台。为什么我必须显式调用垃圾收集器?