GC 分代收集算法 VS 分區收集算法

問題:今天來看看GC 分代收集算法 VS 分區收集算法


分代收集算法

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

在新生代-複製算法:

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

在老年代-標記整理算法:

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

分區收集算法

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

☛ 今天主要看了下分代收集和分區收集的區別,希望對同行們還是有點幫助的,如果錯誤或需要補充請留言評論,謝謝!

點擊查看jvm內存模型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章