1. 程式人生 > >垃圾回收之垃圾回收演算法比較(標記-清除演算法、複製演算法、標記-整理演算法、分代整理演算法)

垃圾回收之垃圾回收演算法比較(標記-清除演算法、複製演算法、標記-整理演算法、分代整理演算法)

標記-清除演算法:

                       第一階段:對符合回收標準的物件進行標記,

                       第二階段:清除這些被標記的物件。


複製演算法:

                      1.將一塊記憶體分成兩部分,進行備用

                      2.進行垃圾回收時,將存活著的物件複製到備用的記憶體中,

                      3.清理剛才的記憶體為備用記憶體。  

             IBM研究發現,由於新生代的物件98%是朝生夕死,所以沒必要1:1的劃分備用記憶體,而是按照8:1:1.分配成。Eden和兩個Survivor區,但是每次只有一個Suivivor和Eden區工作,另外一個survivor區進行備份。

             當然如果垃圾回收時,一個Survivor區的記憶體不夠的話,會借用老年代的記憶體,原則時好借好還再借不難。


 標記——整理演算法:

                           1.對存活物件進行標記,

                           2.對死亡物件進行清楚。

                           3.進行記憶體整理。

       前兩步和標記——清除演算法很像,第三步,記憶體整理避免記憶體碎片化。

 

分代收集演算法:

                       根據不同的年代的特點選擇合適的方法進行垃圾回收。


垃圾回收演算法是記憶體管理的方法論,而垃圾回收是這些方法論的具體實現。