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