JVM垃圾回收算法
复制算法:
标记-清除算法
标记-整理算法
分代收集算法: 新生代用的复制算法;老年代用的标记-清理或者标记-整理算法。
JVM 垃圾回收器
Serial : 单线程复制算法,用于新生代,适用于单核,性能不太好的机器
ParNew: 并发复制算法,用于新生代,适用于多核
Parallel Scavenge: 并发复制算法,用于新生代,该算法更注重吞吐量
在复制过程中,可以配置一个吞吐量,达到阈值,就停止回收。
G1:新老代都可以用,复制算法。过程:初始标记(STW)->并发标记->最终标记(STW)-> 筛选回收(STW)(不是全量回收,只回收region 占用多的)。这里是Magior GC ,若复制内存不够,或者无法分配足够的空间,触发Serial Old 回收,STW 时间会边长。(STW—Stop the word,即系统暂停状态。)
Serial Old: 对应于Serial,单线程标记-整理算法
Parallel Old: 对应于Parallel Scavenge,并发标记-整理算法,注重吞吐量,和Parallel Scavenge一起使用。
CMS : 标记-清除算法。过程:初始标记(STW)->并发标记->重新标记(STW)-> 并发清除->重置。若回收后,空间还是不够用,触发Serial Old 回收,STW 时间会边长。
ZGC:这边主要是染色体概念
Shenandoah: 这边主要的特点是,相对于G1 , 变成了并发回收
Epsilon: 不干事的垃圾回收器,若遇到Full GC ,直接听JVM