1. 程式人生 > >Java筆記丨19 物件清除與垃圾回收

Java筆記丨19 物件清除與垃圾回收

物件的自動清除

垃圾回收

物件回收是由Java虛擬機器的垃圾回收執行緒來完成的

任何物件都有一個引用計數器,當其值為0時,說明該物件可以回收

 

System.gc()方法

它是System類的static方法

它可以要求系統進行垃圾回收

但它僅僅是“建議”,不能強制

 

finalize()方法

Java中沒有“析構方法”

但Object的finalize()有類似的功能

系統在回收時會自動呼叫物件的finalize()方法

protected void finalize() throws Throwable{}

子類的finalize()方法

可以在子類的finalize()方法釋放系統資源

一般來說,子類的finalize()方法中應該呼叫父類的finalize()方法,以保證父類的清理工作能正常進行

 

try-with-resources

由於finalize()方法的呼叫時機不確定,所以一般不用finalize()

關閉開啟的檔案,清除一些非記憶體資源等工作需要進行處理

可以使用try-with-resources語句(JDK1.7以上)

對於實現了java.lang.AutoCloseable的物件

try(Scanner scanner=new Scanner(…)){

……

}

會自動呼叫其close方法,相當於

finally{

Scanner.close();

}