JVM–基础–19.4–垃圾收集器–Parallel Scavenge
1、结构图
2、Parallel Scavenge(并行)收集器
2.1、特征
- 新生代收集器
- 使用复制算法,并行的多线程收集器
- 控制的吞吐量
- 吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)
- 停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户体验,而高吞吐量则可用高效率地利用CPU时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。
- Parallel Scavenge要和Parallel Old一起使用
2.2、参数
2.2.1、-XX:MaxGCPauseMillis:
- 控制最大垃圾收集停顿时间(毫秒),收集器尽可能的保证每次垃圾收集耗费的时间不超过这个设定值
- 如果这个这个值设定的过小,那么Parallel Scavenge收集器为了保证每次垃圾收集的时间不超过这个限定值,会导致垃圾收集的次数增加和增加年轻代的空间大小,垃圾收集的吞吐量也会随之下降。
- XX:MaxGCPauseMillis设置的越小,吞吐量则必然越小。
2.2.2、-XX:GCTimeRatio
- 设置垃圾收集时间占系统运行时间的百分比(>0,<100)
- 如果把值设置为19,即系统运行时间 : GC收集时间 = 19 : 1,那么GC收集时间就占用了总时间的5%【1 / (19 + 1) = 5%】
- 默认值为99,即最大允许1%的垃圾收集时间
,
2.2.3、-XX:+UseAdaptiveSizePolicy:
- 自动设置 新生代的大小、Eden与Survivor区的比例,晋升老年代对象年龄等细节参数
- 设置此选项后,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或者最大的吞吐量,这种调节方式称为GC自适应的调节策略(GC Ergonomics)
- 只需要把基本的内存数据设置好(如-Xmx设置最大堆),然后使用MaxGVPauseMillis参数或GCTimeRation参数给虚拟机设立一个优化目标,JVM会自动调节其他优化参数.
- 自适应调节策略也是Parallel Scavenge收集器与ParNew收集器的一个重要区别
- 使用并行收集器时,建议一直打开
- 对于面向外部的大流量、低延迟系统,不建议启用此参数,建议关闭该参数
2.2、Parallel Scavenge/Parallel Old运行示意图
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)