JVm - Parallel Scavenge 垃圾回收器
Parallel Scavenge垃圾收集器因为与吞吐量关系密切,也称为吞吐量收集器(Throughput Collector)。
1、特点
(A)、有一些特点与ParNew收集器相似
新生代收集器;
采用复制算法;
多线程收集;
(B)、主要特点是:它的关注点与其他收集器不同
CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间;
而Parallel Scavenge收集器的目标则是达一个可控制的吞吐量(Throughput);
关于吞吐量与收集器关注点说明详见本节后面;
2、应用场景
高吞吐量为目标,即减少垃圾收集时间,让用户代码获得更长的运行时间;
当应用程序运行在具有多个CPU上,对暂停时间没有特别高的要求时,即程序主要在后台进行计算,而不需要与用户进行太多交互;
例如,那些执行批量处理、订单处理、工资支付、科学计算的应用程序;
3、设置参数
Parallel Scavenge收集器提供两个参数用于精确控制吞吐量:
(A)、"-XX:MaxGCPauseMillis"
控制最大垃圾收集停顿时间,大于0的毫秒数;
MaxGCPauseMillis设置得稍小,停顿时间可能会缩短,但也可能会使得吞吐量下降;
因为可能导致垃圾收集发生得更频繁;
(B)、"-XX:GCTimeRatio"
设置垃圾收集时间占总时间的比率,0<n<100的整数;
GCTimeRatio相当于设置吞吐量大小;
垃圾收集执行时间占应用程序执行时间的比例的计算方法是:
1 / (1 + n)
例如,选项-XX:GCTimeRatio=19,设置了垃圾收集时间占总时间的5%--1/(1+19);
默认值是1%--1/(1+99),即n=99;
垃圾收集所花费的时间是年轻一代和老年代收集的总时间;
如果没有满足吞吐量目标,则增加代的内存大小以尽量增加用户程序运行的时间;
此外,还有一个值得关注的参数:
(C)、"-XX:+UseAdptiveSizePolicy"
开启这个参数后,就不用手工指定一些细节参数,如:
新生代的大小(-Xmn)、Eden与Survivor区的比例(-XX:SurvivorRation)、晋升老年代的对象年龄(-XX:PretenureSizeThreshold)等;
JVM会根据当前系统运行情况收集性能监控信息,动态调整这些参数,以提供最合适的停顿时间或最大的吞吐量,这种调节方式称为GC自适应的调节策略(GC Ergonomiscs);
这是一种值得推荐的方式:
(1)、只需设置好内存数据大小(如"-Xmx"设置最大堆);
(2)、然后使用"-XX:MaxGCPauseMillis"或"-XX:GCTimeRatio"给JVM设置一个优化目标;
(3)、那些具体细节参数的调节就由JVM自适应完成;
这也是Parallel Scavenge收集器与ParNew收集器一个重要区别;
更多目标调优和GC自适应的调节策略说明请参考:
《Memory Management in the Java HotSpot™ Virtual Machine》 5节 Ergonomics -- Automatic Selections and Behavior Tuning:http://www.oracle.com/technetwork/java/javase/tech/memorymanagement-whitepaper-1-150020.pdf
《Java Platform, Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide》 第2节 Ergonomics:http://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/ergonomics.html#ergonomics
4、吞吐量与收集器关注点说明
(A)、吞吐量(Throughput)
CPU用于运行用户代码的时间与CPU总消耗时间的比值;
即吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间);
高吞吐量即减少垃圾收集时间,让用户代码获得更长的运行时间;
(B)、垃圾收集器期望的目标(关注点)
(1)、停顿时间
停顿时间越短就适合需要与用户交互的程序;
良好的响应速度能提升用户体验;
(2)、吞吐量
高吞吐量则可以高效率地利用CPU时间,尽快完成运算的任务;
主要适合在后台计算而不需要太多交互的任务;
(3)、覆盖区(Footprint)
在达到前面两个目标的情况下,尽量减少堆的内存空间;
可以获得更好的空间局部性;
JVm - Parallel Scavenge 垃圾回收器相关推荐
- Parallel Scavenge垃圾回收器
Parallel与Parallel Old垃圾回收器(学习笔记) 简介 全称为Parallel Scavenge收集器. HotSpot中,除了ParNew收集器是基于并行回收以外,Parallel ...
- Parallel Scavenge和Parallel Old垃圾回收器组合
8.5.2. Parallel Scavenge和Parallel Old垃圾回收器组合 1)工作地点 Parallel Scavenge垃圾回收器工作在年轻代,而Parallel Old工作在老年代 ...
- JVM常见的垃圾回收器
一.常见垃圾收集器 现在常见的垃圾收集器有如下几种: 新生代收集器: Serial ParNew Parallel Scavenge 老年代收集器: Serial Old CMS Parallel O ...
- JVM笔记:垃圾回收器总结
垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商.不同版本的JVM来实现. 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本.从不同角度分析垃圾收集器,可以将GC ...
- 【JVM · GC】垃圾回收器
1. GC分类与性能指标 1.1 垃圾回收期器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商.不同版本的JVM来实现. 由于 JDK 版本处于高速迭代过程中,因此Java 发展至今已经衍 ...
- JVM中的垃圾回收器详解
垃圾回收器的种类和使用 1.概述 1.1垃圾回收器和垃圾回收算法的关系 1.2垃圾回收器的分类 1.3 如何使用参数查看当前使用的垃圾回收器 2 串行收集(Serial) 2.1 概念 3 并行收集( ...
- JVM学习笔记——垃圾回收器
经典收集器与垃圾分代之间的关系 新生代收集器:Serial.ParNew.Parallel Scavenge 老年代收集器:Serial Old.Parallel Old.CMS 整堆收集器:G1 如 ...
- JVM七种垃圾回收器
一 七种垃圾回收器总结: 垃圾收集器 分类 作用位置 使用算法 特点 适用场景 Serial 串行运行 作用于新生代 复制算法 响应速度优先 适用于单CPU环境下的client模式 ParNew 并行 ...
- JVM中的垃圾回收器
文章目录 概述 垃圾回收器分类 GC的性能指标 HotSpot虚拟机中的垃圾收集器 Serial 垃圾收集器(单线程) Serial Old 垃圾收集器(单线程) ParNew 垃圾收集器 Paral ...
- JVM专题之垃圾回收器
一 如何寻找垃圾对象 1.1 引用计数法 每一个对象有一个计数器,当被别的对象引用的时候,则会递增计数器:当别人释放或者引用失效的时候则递减计数器,如果在垃圾回收的时候,引用计数器为0,则表示这个对象 ...
最新文章
- Quartz.NET的管理工具
- IOS 非常流畅的滑动tableView
- Vim的一些使用技巧
- 014 怪物过滤的设计和实现
- 工业4.0技术路线图 - OPC UA
- vulkan api_Vulkan开放标准API支持,针对Linux的新游戏以及更多游戏
- Web 开发中使用了 Vim 作为主编辑器之后......
- cmos和ttl_CMOS与TTL电路的详细对比区别
- git文件没有绿色红色小图标
- 请求头添加token
- 微信公众平台配置服务器之后实现自动回复
- win10开启热点后电脑无法打开网页
- C++析取器在代码自动化测试中的应用
- 【python10个小实验】2、石头、剪刀、布
- java问卷导入excel_Java利用已有的Excel文件导出新的Excel
- cocos2dx android obb,cocos2dx 实现obb包读取 quick2.2.6
- AI WORLD2016世界人工智能大会:中国力量崛起
- su - xxx Could not create session 无法su切换用户
- 【Kubernetes】Pod学习(十五)Deployment部署的回滚、暂停和恢复
- pytorch_nicp编译
热门文章
- 技术债治理的三条原则
- 字体变形html,SVG文字变形动画特效
- 域服务器无法修改域账户密码,域用户使用Ctrl+Alt+del不能修改密码
- 全息投影的发展潜力不可估量,百度神灯搜索不是梦
- 各有风采:影响全世界的100位帝王排行榜
- 贤内助——ICMP协议
- Python2/3的中、英文字符编码与解码输出: UnicodeDecodeError: 'ascii' codec can't decode/encode...
- bzoj4484[Jsoi2015]最小表示 拓补排序+bitset
- LOJ 6198. 谢特(后缀数组+可持久化Trie)
- css实现一个三角形