给Java类添加终结器

1、Java的垃圾自动回收机制是不可控的

我们知道Java的垃圾回收(garbage collection)的工作机制是:当一个对像的引用不在存在时,就认为该对象不再需要,并且可以自动解除分配的内存,也就是说回收了该对象占用的内存。这种回收内存事件的发生不会简单地因为一个或多个对象不再需要就进行垃圾回收,程序人员对Java的垃圾自动回收是不可控制的。

2、对象销毁时需要特定动作怎么办?

有时,对象销毁时需要执行一些动作,例如:如果对象包含一些非Java资源,比如文件句柄(声音、图像文件等)或者字符字体,那么您可能希望确保这些资源在对象销毁之前释放内存。为了处理这种情况,Java提供了一种称为“终结”的机制。通过使用终结机制,可以定义当对象即将被垃圾回收期回收时放生的特定动作。

3、给Java类添加终结器

为了给类添加终结器(finalizer),可以简单地定义finalize()方法。当即将回收类的对象时,Java运行时会调用该方法。在finalize()方法内部,可以指定在销毁对象之前必须执行的那些动作。

4、示例

class Vehicle extends Object{
	private int id;
	public Vehicle(int id){
		this.id = id;
		System.out.println("Vehicle Object   " + id + "   is created");
	}
	
	protected void finalize() throws java.lang.Throwable{
		super.finalize();
		System.out.println("Vehicle Object   " + id + "  is disposed");
	}
}
public class FinalizeDemo {
	public static void main(String[] args){
		Vehicle car1 = new Vehicle(1001);
		Vehicle car2 = new Vehicle(1002);
		Vehicle car3 = new Vehicle(1003);
		
		car2  = null;
		car3 = null;
		System.gc();//Invoke the Java garbage collector
		
	}
}
运行结果:
Vehicle Object   1001   is created
Vehicle Object   1002   is created
Vehicle Object   1003   is created
Vehicle Object   1003  is disposed
Vehicle Object   1002  is disposed










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值