分代收集算法
当前主流的VM垃圾收集都采用分代收集算法,这种算法会根据对象存货周期的不同将内存划分为几块,如JVM中的新生代,老年代和永久代,这样可以根据各年代特点采用最适合的GC算法。
- 在新生代:每次垃圾收集都会有大量的对象死亡,只有少量存活,因此选用复制算法,只需要付出少量存活对象的复制成本就可以完成复制。
- 在老年代:因为对象存活率高,没有额外空间进行分配担保,就必须采用“标记-清理”或“标记-整理”算法来进行回收,不必进行内存复制,且直接腾出内存空间。
分区收集算法
分区收集算法是将整个堆空间分为连续的不同小区间,每个小区间独立使用,独立回收,这样的好处是可以控制一次回收多少个小区间,根据目标停顿时间,每次合理的回收若干个小区间(而不再是一个堆),从而减少GC所产生的停顿。