为什么输出0,1,2输出语句的情况都有
问题描述:
public class Finalize {
protected void finalize() {
System.out.println("this is a finalize fanction");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Finalize();
new Finalize();
System.gc();
}
}
答
这个取决于System.out和Finalize销毁的顺序,这是不确定的。如果控制台先销毁,那么就没有输出,如果某个Finalize先销毁,就输出1个。如果System.out最后销毁,就输出2个
但是可以确认的是,析构函数被执行了2次,无论输出了几行
答
应该是打印两行“this is a finalize fanction”,不存在打印0,1,2.