1. 程式人生 > >GC的物件標記分析法

GC的物件標記分析法

1、引用計數法
引用計數法原理很簡單,給每個新生物件配備一個計數器。當此物件被引用,計數器+1;當此物件的引用被斷開,計數器-1。GC會定時詢問這些計數器,當該計數器的值降到0就認為物件死亡,物件會被標記,等待清理。更高階的引用計數實現會引入“弱引用”的概念來打破某些已知的迴圈引用,但那是另一個話題了。此方法不能夠處理弱引用的物件,故而至今已經被捨棄。
2、可達性分析法
可達性分析法較為複雜,需要管理全域性的物件圖資訊。跟樹型結構(root)的概念一致。此分析法只需管理根節點,從根節點出發掃描出去,基於引用的可到達性來判斷物件的生死。這使得物件的生死狀態只能批量的被識別出來,然後批量

釋放死物件。很好的解決了弱引用不能被成功標誌的問題。被選為根節點的物件的引用,儲存在java棧中。而被選舉的這個過程是較為複雜的,在此不做論述,可自行查閱。目前虛擬機器基本都是採用可達性演算法。