finalize()方法的工作原理


一旦垃圾回收器准備好釋放對象占用的存儲空間,將首先調用其finalize()方法(如果覆蓋了finalize()方法),並且在下一次垃圾回收器發生時,才會真正回收對象占用的內存。

至於為什么在下一次垃圾回收動作發生時才會回收內存,原因是如果一個對象覆蓋了 finalize() 方法,那么在真正被宣告死亡的時候,至少需要經過兩次標記。第一次被標記的時候會被放在 一個 F-Queue 隊列中,finalize() 方法是對象逃脫死亡命運的最后一次機會。在第二次標記的時候,如果該對象成功與引用鏈(GC-Roots)上的任何一個對象關聯,那么它仍然可以存活下來,否則將會被垃圾收集器回收。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM