老年代垃圾收集器,與Serial同樣,是一個單線程垃圾收集器,不一樣的是用的算法不同(標記-整理)
根據老年代的特色,有人設計了標記-整理(Mark Compact)
算法,標記過程和標記-清除
算法同樣,可是後續步驟不是直接對可回收對象進行清理,而是讓存活對象向一端移動,而後清除掉邊界之外的內存,以下圖所示。算法
複製算法
在對象存活比較高的老年代須要複製大量的對象,效率將會貶低,若是不想浪費50%的內存,就須要有額外的空間進行分配擔保,以應對對象100%都存活的極端狀況,因此老年代並不適用複製算法
。多線程
複製收集算法在對象存活率較高時就要進行較多的複製操做,效率將會變低。更關鍵的是,若是不想浪費50%的空間,就須要有額外的空間進行分配擔保,以應對被使用的內存中全部對象都100%存活的極端狀況,因此在老年代通常不能直接選用這種算法。
老年代收集器,是Parallel Scavenge老年代版本,用的算法是
標記-整理
,在JDK1.6提供,多線程收集