Parallel Scavenge收集器、Serial old收集器、Parallel old收集器
Parallel Scavenge收集器
Parallel Scavenge 收集器是⼀个新⽣代收集器,它也是使⽤复制算法的收集器,⼜是并⾏的多线程收集器
由于与吞吐量关系密切,Parallel Scavenge 收集器也经常称为“吞吐量优先”收集器
吞吐量是什么?CPU⽤于运⾏⽤户代码的时间与CPU总时间的⽐值,99%时间执⾏⽤户线程,1%时间回收垃圾 ,这时候吞吐量就是99%
-
与parnew垃圾收集器类似,需要先暂停用户线程,等gc回收完成后,再开启用户线程
-
特点
Parallel Scavenge 收集器的特点是它的关注点与其他收集器不同,CMS 等收集器的关注点是尽可能地缩短垃圾收集时⽤户线程的停顿时间,⽽ Parallel Scavenge 收集器的⽬标则是达到个可控制的吞吐(Throughput)。
所谓吞吐量就是 CPU ⽤于运⾏⽤户代码的时间与 CPU 总消耗时间的⽐值,即吞吐量=运⾏⽤户代码时间/(运⾏⽤户代码时间+垃圾收集时间),虚拟机总共运⾏了 100 分钟,其中垃圾收集花掉 1 分钟,那吞吐量就是 99%
停顿时间越短就越适合需要与⽤户交互的程序,良好的响应速度能提升⽤户体验,⽽⾼吞吐量则可以⾼效率地利⽤ CPU 时间,尽快完成程序的运算任务,主要适合在后台运算⽽不需要太多交互的任务。
虚拟机会根据当前系统的运⾏情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或者最⼤的吞吐量,这种调节⽅式称为 GC⾃适应调节策略
-XX:MaxGCPauseMillis参数GC停顿时间,这个参数配置太⼩的话会发⽣频繁GC
-XX:GCTimeRatio参数表示吞吐量的值,默认为99%
Serial old收集器
它是⼀个单线程收集器,使⽤"标记--整理"算法
Parallel old收集器
Parallel Scavenge收集器的⽼年代版本,使⽤多线程+标记整理算法