Java虚拟机——Parallel Scavenge收集器
1:是什么
- Parallel Scavenge 收集器是⼀个新⽣代收集器,它也是使⽤复制算法的收集器,⼜是并⾏的 多线程收集器,由于与吞吐量关系密切,Parallel Scavenge 收集器也经常称为“吞吐量优先”收集器
- 吞吐量是什么?CPU⽤于运⾏⽤户代码的时间与CPU总时间的⽐值,99%时间执⾏⽤户线 程,1%时间回收垃圾 ,这时候吞吐量就是99%
2:特点
- Parallel Scavenge 收集器的特点是它的关注点与其他收集器不同,CMS 等收集器的关注点是 尽可能地缩短垃圾收集时⽤户线程的停顿时间,⽽ Parallel Scavenge 收集器的⽬标则是达到 个可控制的吞吐(Throughput)。所谓吞吐量就是 CPU ⽤于运⾏⽤户代码的时间与 CPU 总消耗时间的⽐值,即吞吐量=运⾏⽤户代码时间/(运⾏⽤户代码时间+垃圾收集时间),虚拟机总共运⾏了 100 分钟,其中垃圾收集花掉 1 分钟,那吞吐量就是 99% 停顿时间越短就越 适合需要与⽤户交互的程序,良好的响应速度能提升⽤户体验,⽽⾼吞吐量则可以⾼效率地 利⽤ CPU 时间,尽快完成程序的运算任务,主要适合在后台运算⽽不需要太多交互的任务。
- 虚拟机会根据当前系统的运⾏情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或者最⼤的吞吐量,这种调节⽅式称为 GC⾃适应调节策略
3:使用场景
Parallel Scavenge收集器的高吞吐量可以最高效率的利用CPU时间,尽快的完成程序的运算任务等,主要适合在后台运算而不是太多交互的任务(其不适合需要与用户交互的程序,良好的响应速度能提升用户的体验,此种场景CMS效果更好)。
重要参数
重要的参数有三个,其中两个参数用于精确控制吞吐量,分别是
1.1. 控制最大垃圾收集停顿时间的-XX:MaxGCPauseMillis参数
MaxGCPauseMillis参数允许的值是一个大于0的毫秒数,收集器将尽力保证内存回收花费的时间不超过设定值。不过大家不要异想天开地认为如果把这个参数的值设置得稍小一点就能使得系统的垃圾收集速度变得更快,GC停顿时间缩短是以牺牲吞吐量和新生代空间来换取的:系统把新生代调小一些,收集300MB新生代肯定比收集500MB快吧,这也直接导致垃圾收集发生得更频繁一些,原来10秒收集一次、每次停顿100毫秒,现在变成5秒收集一次、每次停顿70毫秒。停顿时间的确在下降,但吞吐量也降下来了。停顿时间与空间成反比。1.2. 直接设置吞吐量大小的 -XX:GCTimeRatio参数。
GCTimeRatio参数的值应当是一个大于0小于100的整数,也就是垃圾收集时间占总时间的比率。如果把此参数设置为19,那允许的最大GC时间就占总时间的5%(即1 /(1+19)),默认值为99,就是允许最大1%(即1 /(1+99))的垃圾收集时间。1.3. UseAdaptiveSizePolicy开关参数。
-XX:+UseAdaptiveSizePolicy是一个开关参数,当这个参数打开之后,就不需要手工指定新生代的大小(-Xmn)、Eden与Survivor区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等细节参数了,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或最大的吞吐量,这种调节方式称为GC自适应的调节策略(GC Ergonomics)。1.4. GC Ergonomics:表示GC的自适应调节策略,其中Ergonomics单词表示工效学,人体工程学的意思。
Serial old收集器,它是⼀个单线程收集器,使⽤"标记--整理"算法
Parallel old收集器Parallel Scavenge收集器的⽼年代版本,使⽤多线程+标记整理算法
[GC[PSYoungGen 表示用的是年轻代使用Parallel Scavenge收集器。
[GC[ParNew 表示使用的是年轻代使用ParNew收集器(Parallel New收集器)。
[GC[DefNew 表示用的是年轻代使用Serial收集器(Serial New收集器)。
[GC[PSOldGen 表示用的是老年代使用的Parallel Old收集器。
JVM的GC日志的主要参数包括如下几个:
-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出GC的详细日志
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-XX:+PrintGCApplicationStoppedTime // 输出GC造成应用暂停的时间
-Xloggc:../logs/gc.log 日志文件的输出路径
Java虚拟机——Parallel Scavenge收集器相关推荐
- 深入理解Java虚拟机——Parallel Old收集器
目录 一.Parallel Old收集器的概述 二.Parallel Old收集器运行示意图 一.Parallel Old收集器的概述 Parallel Old收集器是Parallel Scaveng ...
- 【Android 内存优化】垃圾回收算法 ( 分代收集算法 | Serial 收集器 | ParNew 收集器 | Parallel Scavenge 收集器 | CMS 并发标记清除收集器 )
文章目录 一. 分代收集算法 二. 垃圾回收器 / 收集器 ( GC ) 三. 串行收集器 ( Serial ) 四. ParNew 收集器 五. Parallel Scavenge 收集器 六. C ...
- 深入理解java虚拟机gc_jvm GC收集器与内存分配(深入理解java虚拟机第三章)
jvm GC收集器与内存分配(深入理解java虚拟机第三章) 本篇是<深入理解java虚拟机第三章>的笔记记录. 一 为什么要关注GC和内存分配? 需要排查各种内存溢出.内存泄漏问题时,或 ...
- Parallel Scavenge收集器:吞吐量优先
Parallel Scavenge收集器,是年轻代中除了ParNew以外的另一款垃圾收集器,同样采用了并行回收.复制算法和"Stop The World"机制. 那么它和ParNe ...
- Jvm垃圾收集器总结之 Parallel Scavenge 收集器
Parallel Scavenge 收集器是个新生代收集器.它也是使用复制算法的收集器,又是并行的多线程收集器....看上去和ParNew 都一样,那它有什么特别之处呢? Parallel Scave ...
- 【Java 虚拟机原理】垃圾收集器 ( Serial | ParNew | Parallel Scavenge | CMS | Serial Old - MSC | Parallel Old )
文章目录 前言 一.HotSpot 虚拟机的垃圾收集器 二.年轻代垃圾收集器 1. 串行收集器 ( Serial ) 2. ParNew 收集器 3. Parallel Scavenge 收集器 二. ...
- 27.垃圾收集器(Serial收集器、ParNew收集器、Parallel收集器、Parallel Old 收集器、CMS收集器、G1收集器、常用的收集器组合)
27.垃圾收集器 27.1.Serial收集器 27.2.ParNew收集器 27.3.Parallel收集器 27.4.Parallel Old 收集器 27.5.CMS收集器 27.6.G1收集器 ...
- Parallel Old收集器
Parallel Old收集器是Parallel Scavenge收集器的老年代版本,使用多线程和"标记-整理算法"进行垃圾回收. 吞吐量优先
- Serial Old收集器和Parallel Old收集器
Serial Old收集器 Serial Old是 Serial收集器的老年代版本: 1.特点 针对老年代: 采用"标记-整理"算法(还有压缩,Mark-Sweep-Compact ...
- 【jvm我能讲两小时056】说说Parallel old收集器的特点以及使用场景?
说说Parallel old收集器的特点以及使用场景? Parallel Old是Parallel Scavenge收集器的老年代版本, 支持多线程并发收集, 基于标记-整理算法实现 . 这个收集器 ...
最新文章
- access 合并多行字符串_第20p,什么是字符串?Python中的str
- 微信公众平台开发--微信网页授权
- C/C++在Android开发中的应用
- 16、HTML密码框
- 最近使用的两个工具 winscp和xshell
- 第二十二章 李逵为什么不可爱
- L. Mod(预处理+分块)
- (python3.8)pygraphviz的下载安装配置(在python下)最新
- 人脸识别dlib库 记录
- angularjs源码笔记(4)--scope
- python 加速方法_24种方法加速你的Python
- 数据命脉:未来将性命攸关
- java实现Tomasulo算法_并行计算机组成与设计pdf
- (八)IT_开发常用单词大全
- 基于Python绘制一个摸鱼倒计时界面
- 为什么我的echarts字体样式这么丑?Echarts 柱状图、饼图 等标签、字体、样式调整
- 计算机的音乐怎样弹生日快乐,5 分钟让你学会用吉他弹《生日快乐》歌
- vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in v-on handler (Promise/async): “Error: 失败“found in
- 内容即广告是最好的移动商业模式?
- 0基础快速入门WebPack(3)——图解详述plugins(插件)的安装及sourceMap的使用及WebpackDevServer正向代理和模块热更新等(附详细案例源码解析过程及版本迭代过程)
热门文章
- Bzoj1208 宠物收养所
- 概率论中常见分布总结以及python的scipy库使用:两点分布、二项分布、几何分布、泊松分布、均匀分布、指数分布、正态分布
- Sem 2---Web Database---XML学习笔记[2]
- 推荐几款牛逼Chrome网页翻译插件,功能强大内容惊艳,务必低调使用
- 跨专业考研渣硕是如何拿到BAT、TWH等研发offer的!
- 计算机每天定时开机设置方法,电脑如何设置每天定时开机
- 解决 Could not locate executable null\bin\winutils.exe in the Hadoop binaries 异常
- 愚见《Nighttime Visibility Enhancement by Increasing the Dynamic Range andSuppression of Light Effects》
- [Android]在Android TV中实现组合按键的监听触发功能
- 大学计算机专业的同学是怎么学习的?