Java筆記丨19 物件清除與垃圾回收
阿新 • • 發佈:2018-12-17
物件的自動清除
垃圾回收
物件回收是由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();
}