認識GC時遇到的算法

引用計數算法

給對象中添加一個引用計數器,每當有一個地方引用它時,計數器值就加1;當引用失效時,計數器值就減1;任何時刻計數器爲0的對象就是不可能再被使用的
但是主流jvm中並沒有使用引用計數算法來管理內存,主要是因爲它很難解決對象之間相互循環引用的問題

可達性分析算法

在主流的商用程序語言(C#,Java,Lisp)的主流實現中,使用可達性分析(Reachability Analysis)來判定對象是否存活的。
基本思路就是通過一系列的稱爲“GC Roots”的對象作爲起始點,從這些節點開始向下搜索,搜索所走過的路徑稱爲引用鏈(Reference Chain),當一個對象到GC Roots沒有任何引用鏈相連時,則證明此對象是不可用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章