为什么这里没有调用 finalize()
。代码编译并运行成功,但没有任何输出。
package temp;
public class Temp {
int i;
Temp(int j) {
i = j;
}
public void finalize() {
if (i == 10) {
System.out.println("Finalize called.");
}
}
public static void main(String[] args) {
Temp obj = new Temp(10);
System.gc();
}
}
最佳答案
您对 System.gc();
的调用没有任何区别,因为您的 Temp
实例有一个引用 (obj
),所以它不是有资格进行垃圾收集。
即使它符合垃圾收集条件,调用 System.gc();
也不一定会立即收集所有没有引用它们的对象。
关于java - finalize() 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27499077/