Java中的垃圾回收

Java中的垃圾回收



首先請謹記以下三點


  • Your objects might not get garbage collected.
  • Garbage collection is not destruction.
  • Garbage collection is only about memory.



清理:終結(jié)處理和垃圾回收——finalize()


Java有垃圾回收器負責回收無用對象(前提是該對象是new出來的)占用的內(nèi)存,但是對于那些不是使用new獲得的特殊對象內(nèi)存資源,該如何回收它們占用的內(nèi)存資源呢?

答案是:Java允許在類中定義一個名為finalize()的方法。


其工作原理的“假定”是這樣的:

  • 一旦垃圾回收器準備好釋放對象占用的內(nèi)存資源時,將首先調(diào)用對象的finalize()方法。
  • 在下一次垃圾回收動作發(fā)生時,真正地釋放對象所占用的內(nèi)存資源。

所以,使用finalize()能夠幫助你做一些真正重要的清理工作。


使用以下代碼可以使finalize()總會被調(diào)用:

System.gc();
System.runFinalization();


《Effective Java》中有這么一句話:

但是,請注意一定不要在Java中過多使用finalize()!最好避免使用finalize(),因為它無法預料,通常來說使比較危險的,總之使多余的。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容