終結(jié)方法(finalizer)通常是不可預(yù)測(cè)的揪胃,也是很危險(xiǎn)的斥赋,一般情況下是不必要使用它的缰猴。使用終結(jié)方法會(huì)導(dǎo)致行為不穩(wěn)定,降低性能疤剑,以及可移植性的問(wèn)題滑绒,不過(guò)終結(jié)方法也有其可用之處。
終結(jié)方法的壞處
- 不能保證被及時(shí)執(zhí)行
- 非常嚴(yán)重的性能損失
終結(jié)方法的好處
- 充當(dāng)最后的安全網(wǎng),但也并不是特別建議
建議
當(dāng)我們需要手動(dòng)結(jié)束一個(gè)對(duì)象的時(shí)候,顯示的釋放資源,比如InputStream 的 close方法
總結(jié)
總之除非是作為資源回收處理的第二道防線(安全網(wǎng))或者是為了終結(jié)非關(guān)鍵的資源隘膘,否則請(qǐng)不要使用終結(jié)方法疑故。如果沒(méi)辦法真的使用了finalize,別忘記了調(diào)用super.finalize()弯菊。還應(yīng)考慮是否使用終結(jié)方法守衛(wèi)者纵势,使未調(diào)用super.finalize()方法的類的父類的終結(jié)方法也會(huì)被執(zhí)行。