GC演算法 筆記 GC標記 壓縮演算法

2021-10-03 22:44:14 字數 438 閱讀 7770

將 gc標記-清除演算法與gc複製演算法相結合。

一:lisp2演算法

標記階段結束後進入壓縮階段,壓縮階段縮小被標記節點之間的距離。

compaction_phase()

set_forwarding_ptr()

adjust_ptr()

move_obj()

優點:

可有效利用堆

缺點:壓縮花費計算成本

二:two-finger演算法

必須將所有物件整理成大小一致,,與lsp2不同的是沒有必要為forwarding指標準備空間,只需要在原空間物件的域中設定

forwarding指標即可。

move_obj()

adjust_ptr()

三:**演算法

四:immixgc演算法

GC演算法 標記清除演算法

標記清除演算法,描述起來很簡單,從名字上就能看出,分為兩個階段 標記階段 遍歷所有物件,將活動物件都打上標記 清除階段 遍歷堆,將沒有標記的物件釋放掉.介紹完畢,本文結束.開玩笑,確實看上去很簡單啦.那就具體思考一下實現吧.介紹寫的很清楚了,實現也是兩個階段唄,先打tag,後清除.標記 尋找所有的活...

GC演算法 複製演算法

複製演算法就是將記憶體空間二等分,每次只使用其中一塊.當執行gc時,講a部分的所有活動物件集體移到b中,就可以講a全部釋放.畫個圖就是 在執行gc前,記憶體長這樣 當執行gc後,記憶體就變成這樣了 還記得標記清除演算法的問題是什麼嗎?記憶體碎片化嚴重.現在好了,碎片化問題解決了,每次gc執行後,記憶...

GC複製演算法

gc複製演算法 它是把某一空間的活動物件全部複製到另乙個空間,複製完成後gc也就結束了 一起看下gc複製演算法的copying函式 copying copy函式在複製時會先檢查是否已被複製,若已被複製,不再操作,否則進行複製,貼上copied標籤複製完成返回新空間的位址,這樣即使有多個物件引用obj...