1.分代收集算法
根據對象存活周期的不同將內存划分為幾塊,入JVM中的新生代,老年代,永久代,這樣就可以根據各年代特點分別采用最適當的GC算法
1.1在新生代使用復制算法: 因為新生代每次垃圾收集都能發現大批的對象已死,只有少量存活,因此選用復制算法,只需要付出少量存活對象的復制成本就可以完成收集.
1.2在老年代使用標記整理算法:因為對象存活率高,沒有額外空間對它進行分配擔保,就必須采用”標記-清理“或者”標記-整理“算法來進行回收,不必進行內存復制,直接騰出空閑內存
2.分區收集算法
分區算法則將整個堆空間划分為連續的不同小區間, 每個小區間獨立使用, 獨立回收
這樣可以控制一次回收多少個小區間 , 根據目標停頓時間, 每次合理地回收若干個小區間(而不是整個堆), 從而減少一次GC 所產生的停頓。