位置:首頁 > 軟件操作教程 > 編程開發(fā) > Java > 問題詳情

當(dāng)對(duì)象失效了,它就會(huì)從內(nèi)存中移出,或者說是刪除。和對(duì)象創(chuàng)建時(shí)調(diào)用構(gòu)造函數(shù)類似,Java在對(duì)象刪除時(shí)提供了調(diào)用析構(gòu)函數(shù)的能力。構(gòu)造函數(shù)的名稱使用類的名稱,與此不同的是,析構(gòu)函數(shù)的名稱是 finalize()。 finalize()方法提供一個(gè)放置執(zhí)行清除對(duì)象的代碼的位置,如下定義: void finalize() { // 收尾工作 } 有必要指出的是,在 Java 中當(dāng)對(duì)象失效時(shí),不能保證 finalize()方法會(huì)被調(diào)用。這是因?yàn)?Java在系統(tǒng)垃圾收集(garbage collectio

提問人:榮凡88發(fā)布時(shí)間:2020-10-14

當(dāng)對(duì)象失效了,它就會(huì)從內(nèi)存中移出,或者說是刪除。和對(duì)象創(chuàng)建時(shí)調(diào)用構(gòu)造函數(shù)類似,Java在對(duì)象刪除時(shí)提供了調(diào)用析構(gòu)函數(shù)的能力。構(gòu)造函數(shù)的名稱使用類的名稱,與此不同的是,析構(gòu)函數(shù)的名稱是 finalize()。 finalize()方法提供一個(gè)放置執(zhí)行清除對(duì)象的代碼的位置,如下定義:

void finalize() {

 // 收尾工作

有必要指出的是,在 Java 中當(dāng)對(duì)象失效時(shí),不能保證 finalize()方法會(huì)被調(diào)用。這是因?yàn)?Java在系統(tǒng)垃圾收集(garbage collection)部分刪除掉了對(duì)象,這會(huì)在不定的時(shí)間間隔里發(fā)生。由于在Java 執(zhí)行一次垃圾收集前,對(duì)象并不會(huì)被真正地刪除掉,所以對(duì)象的 finalize()方法在此之前也不會(huì)被調(diào)用。知道這一點(diǎn),就可以肯定地說不應(yīng)該依靠 finalize()方法來完成任何和時(shí)間關(guān)鍵(time 

critical)相關(guān)的事情。通常你很少需要在 finalize()方法中放置代碼,因?yàn)?Java 在系統(tǒng)運(yùn)行期間對(duì) 失效對(duì)象做了很好的清理工作。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部