public class TestFinalize {
static int i = 0;
public TestFinalize() {
i++;
}
protected void finalize(){
i--;
}
public static void main(String[] args) {
TestFinalize testFinalize = new TestFinalize();
testFinalize = new TestFinalize();
System.gc();
System.out.println(i);
}
}
我预计在这种情况下i的值总是1,但是当我多次运行此代码时,它有时会打印1,有时会打印2。 为什么会这样?