Java 中的finalize()函數

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虛擬機(JVM)垃圾回收器提供...
    簡欲明心閱讀 89,807評論 17 311
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,868評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,754評論 18 399
  • Java引用的種類 1.對象在內存中的狀態 對于JVM的垃圾回收機制來說,是否回收一個對象的標準在于:是否還有引用...
    Jack921閱讀 3,877評論 0 3
  • 墨跡磨嘰,有很多墨跡磨嘰,他們會同時出現在墨跡磨嘰的腦海里,不停地自說自話。 墨跡磨嘰很傷心,因為有很多很多朋友的...
    墨跡磨嘰閱讀 268評論 0 1