1. 程式人生 > >Java物件自我救贖機制

Java物件自我救贖機制

一.可達性分析演算法        虛擬機器通過可達性分析演算法來判定物件是否是存活的,這個演算法的基本思想是:通過一系列的稱為“GC Roots”的物件作為起點,從這些節點向下搜尋,搜尋所走過的路稱為引用鏈,當一個物件到GC Roots沒有任何引用鏈相連時,則證明此物件時不可用的。 二.物件的自我救贖機制        在可達性分析演算法執行過後,即使在可達性分析演算法中不可達的物件,也並非一定要被宣告死亡,這時候它們暫時處於一個“緩刑”階段,要宣告一個物件死亡,則至少要經歷兩次標記過程,最後才能宣判結果。其過程如圖: finalize()方法是物件逃脫死亡命運的最後一次機會,並且任何一個物件的finalize()方法都只會被系統自動呼叫一次,如果物件面臨下一次回收,它的finalize()方法不會執行,只能面對死亡的命運。