JVM老年代垃圾收集器Serial Old和Parallel Old

image-20201109212219872

Serial Old垃圾收集器

老年代垃圾收集器,與Serial同樣,是一個單線程垃圾收集器,不一樣的是用的算法不同(標記-整理)

image-20201110082318285

根據老年代的特色,有人設計了標記-整理(Mark Compact)算法,標記過程和標記-清除算法同樣,可是後續步驟不是直接對可回收對象進行清理,而是讓存活對象向一端移動,而後清除掉邊界之外的內存,以下圖所示。算法

img

複製算法在對象存活比較高的老年代須要複製大量的對象,效率將會貶低,若是不想浪費50%的內存,就須要有額外的空間進行分配擔保,以應對對象100%都存活的極端狀況,因此老年代並不適用複製算法多線程

複製收集算法在對象存活率較高時就要進行較多的複製操做,效率將會變低。更關鍵的是,若是不想浪費50%的空間,就須要有額外的空間進行分配擔保,以應對被使用的內存中全部對象都100%存活的極端狀況,因此在老年代通常不能直接選用這種算法。

Parallel Old

老年代收集器,是Parallel Scavenge老年代版本,用的算法是 標記-整理,在JDK1.6提供,多線程收集

image-20201110082244415

相關文章
相關標籤/搜索