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」がコンソールに出力されます。ガベージ コレクタを明示的に呼び出さなければならないのはなぜですか?