java编程思想练习题-第5章练习10-finalize方法1

题目:编写具有finalize方法的类,并在方法中打印消息。在main中为该类创建一个对象。试着解释这个程序的行为。

分析:大多数时候我们不需要编写finalize方法,因为jvm垃圾回收器已经帮我们做好了一切,我们什么时候需要它呢?如果我们的对象不是new获得的内存空间,或者调用了naive方法,在方法中用其他方式获得内存空间,我们需要finalize方法告诉编译器如何释放内存空间。

它的工作流程如下:一旦垃圾回收器准备释放对象的空间,先调用其finalize方法,在下一次垃圾回收动作发生的时候,才会真正的回收。

我们需要注意的是fianlize方法并不是析构方法,它可能永远不会被调用

package iteye;

public class test {
	
	@Override
	public void finalize(){
		System.out.println("start finalize  "+this);
	}
	public static void main(String[] args)  {
		test t=new test();
		t=null;
		System.gc();
	
	}
}

 运行之后我们发现时而又输出,时而没有,这就说明了finalize的不确定性。

猜你喜欢

转载自buptchj.iteye.com/blog/2247582
今日推荐