當對象失效了,它就會從內存中移出,或者說是刪除。和對象創(chuàng)建時調用構造函數類似,Java在對象刪除時提供了調用析構函數的能力。構造函數的名稱使用類的名稱,與此不同的是,析構函數的名稱是 finalize()。 finalize()方法提供一個放置執(zhí)行清除對象的代碼的位置,如下定義: void finalize() { // 收尾工作 } 有必要指出的是,在 Java 中當對象失效時,不能保證 finalize()方法會被調用。這是因為 Java在系統(tǒng)垃圾收集(garbage collectio
提問人:榮凡88發(fā)布時間:2020-10-14
當對象失效了,它就會從內存中移出,或者說是刪除。和對象創(chuàng)建時調用構造函數類似,Java在對象刪除時提供了調用析構函數的能力。構造函數的名稱使用類的名稱,與此不同的是,析構函數的名稱是 finalize()。 finalize()方法提供一個放置執(zhí)行清除對象的代碼的位置,如下定義:
void finalize() {
// 收尾工作
}
有必要指出的是,在 Java 中當對象失效時,不能保證 finalize()方法會被調用。這是因為 Java在系統(tǒng)垃圾收集(garbage collection)部分刪除掉了對象,這會在不定的時間間隔里發(fā)生。由于在Java 執(zhí)行一次垃圾收集前,對象并不會被真正地刪除掉,所以對象的 finalize()方法在此之前也不會被調用。知道這一點,就可以肯定地說不應該依靠 finalize()方法來完成任何和時間關鍵(time
critical)相關的事情。通常你很少需要在 finalize()方法中放置代碼,因為 Java 在系統(tǒng)運行期間對 失效對象做了很好的清理工作。
繼續(xù)查找其他問題的答案?
相關視頻回答
點擊加載更多評論>>