垃圾回收之垃圾回收演算法比較(標記-清除演算法、複製演算法、標記-整理演算法、分代整理演算法)
阿新 • • 發佈:2018-12-27
標記-清除演算法:
第一階段:對符合回收標準的物件進行標記,
第二階段:清除這些被標記的物件。
複製演算法:
1.將一塊記憶體分成兩部分,進行備用
2.進行垃圾回收時,將存活著的物件複製到備用的記憶體中,
3.清理剛才的記憶體為備用記憶體。
IBM研究發現,由於新生代的物件98%是朝生夕死,所以沒必要1:1的劃分備用記憶體,而是按照8:1:1.分配成。Eden和兩個Survivor區,但是每次只有一個Suivivor和Eden區工作,另外一個survivor區進行備份。
當然如果垃圾回收時,一個Survivor區的記憶體不夠的話,會借用老年代的記憶體,原則時好借好還再借不難。
標記——整理演算法:
1.對存活物件進行標記,
2.對死亡物件進行清楚。
3.進行記憶體整理。
前兩步和標記——清除演算法很像,第三步,記憶體整理避免記憶體碎片化。
分代收集演算法:
根據不同的年代的特點選擇合適的方法進行垃圾回收。
垃圾回收演算法是記憶體管理的方法論,而垃圾回收是這些方法論的具體實現。