finalize()是Object的一个方法,一旦垃圾回收器准备释放对象的内存空间的时候,首先会调用去finalize方法,并且在下一次垃圾回收动作的时候,才会把对象真正的回收。所以可以用finalize方法在垃圾回收对象之前做一些工作,比如:
public class Book {
private boolean isCheckin = false;
Book(boolean ischeckin) {
this.isCheckin = ischeckin;
}
protected void finalize() {
if(this.isCheckin) {
//
}else {
//isCheckin = false
}
try {
super.finalize();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Book(true);
new Book(false);
System.gc();
}
}
如果每个Book按照需求需要在isCheckin = true的时候被回收视为正常情况,那么如果在isCheckin = false 的时候将要被回收了,这种就是异常情况,我们可以在这里进行相关的逻辑处理。