Java核心知識 JVM GC 分代收集算法 VS 分區收集算法(六)


Java核心知識 JVM GC 分代收集算法    VS 分區收集算法(六)

1. 分代收集算法

當前主流 VM 垃圾收集都採用”分代收集”(Generational Collection)算法, 這種算法會根據 對象存活週期的不同將內存劃分為幾塊, 如 JVM 中的 新生代、老年代、永久代,這樣就可以根據 各年代特點分別採用最適當的 GC 算法

1.1. 在新生代-複製算法

每次垃圾收集都能發現大批對象已死, 只有少量存活. 因此選用複製算法, 只需要付出少量 存活對象的複製成本就可以完成收集

1.2. 在老年代-標記整理算法

因為對象存活率高、沒有額外空間對它進行分配擔保, 就必須採用“標記—清理”或“標 記—整理”算法來進行回收, 不必進行內存複製, 且直接騰出空閒內存.

2. 分區收集算法

分區算法則將整個堆空間劃分為連續的不同小區間, 每個小區間獨立使用, 獨立回收. 這樣做的 好處是可以控制一次回收多少個小區間 , 根據目標停頓時間, 每次合理地回收若干個小區間(而不是 整個堆), 從而減少一次 GC 所產生的停頓。


分享到:


相關文章: