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 的時候將要被回收了,這種就是異常情況,我們可以在這里進行相關的邏輯處理。