對象存活判斷

最近學了下關于對象是否存活方面的知識,我老是覺得有些知識明明看完還挺明白的,但是過了幾天再看就跟看新東西一樣。故寫一寫,記一記。

引用計數(shù)法可達性分析算法皆是判斷對象是否存活的算法。

引用計算法:為對象設置一個計數(shù)器,設值為0。若有地方引用它時,計數(shù)器加1,結束引用時減1。判斷值是否為0,若為0說明該對象沒有被引用,會被判定為可回收對象;若不為0說明該對象被引用,不會回收。優(yōu)點:實現(xiàn)簡單,且效率高。不足:難處理循環(huán)引用的情況

可達性分析算法:GC root為起點開始收索,該路徑稱為引用鏈。當存在對象到GC root沒有引用鏈時,說明當前對象不可用。判定為可回收對象??蛇_性分析算法的可回收對象還有存活的可能性!??!?

該對象會進行第一次判斷,看是否有必要執(zhí)行finalize()方法,如果對象沒有覆蓋finalize()方法或者finalize()方法被虛擬機調用過,該對象會被視為"沒必要執(zhí)行",會被回收。若第一次判斷通過被視為”有必要執(zhí)行“,該對象被放進F-Queue隊列里面,虛擬機自動生成一個finalizer線程去觸發(fā)fianlize()方法,如果對象在觸發(fā)方法的過程中連接上了引用鏈,則該對象不會被回收,否則會被回收。


不對之處,望指出

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容