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 垃圾回收器相关推荐

  1. Parallel Scavenge垃圾回收器

    Parallel与Parallel Old垃圾回收器(学习笔记) 简介 全称为Parallel Scavenge收集器. HotSpot中,除了ParNew收集器是基于并行回收以外,Parallel ...

  2. Parallel Scavenge和Parallel Old垃圾回收器组合

    8.5.2. Parallel Scavenge和Parallel Old垃圾回收器组合 1)工作地点 Parallel Scavenge垃圾回收器工作在年轻代,而Parallel Old工作在老年代 ...

  3. JVM常见的垃圾回收器

    一.常见垃圾收集器 现在常见的垃圾收集器有如下几种: 新生代收集器: Serial ParNew Parallel Scavenge 老年代收集器: Serial Old CMS Parallel O ...

  4. JVM笔记:垃圾回收器总结

    垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商.不同版本的JVM来实现. 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本.从不同角度分析垃圾收集器,可以将GC ...

  5. 【JVM · GC】垃圾回收器

    1. GC分类与性能指标 1.1 垃圾回收期器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商.不同版本的JVM来实现. 由于 JDK 版本处于高速迭代过程中,因此Java 发展至今已经衍 ...

  6. JVM中的垃圾回收器详解

    垃圾回收器的种类和使用 1.概述 1.1垃圾回收器和垃圾回收算法的关系 1.2垃圾回收器的分类 1.3 如何使用参数查看当前使用的垃圾回收器 2 串行收集(Serial) 2.1 概念 3 并行收集( ...

  7. JVM学习笔记——垃圾回收器

    经典收集器与垃圾分代之间的关系 新生代收集器:Serial.ParNew.Parallel Scavenge 老年代收集器:Serial Old.Parallel Old.CMS 整堆收集器:G1 如 ...

  8. JVM七种垃圾回收器

    一 七种垃圾回收器总结: 垃圾收集器 分类 作用位置 使用算法 特点 适用场景 Serial 串行运行 作用于新生代 复制算法 响应速度优先 适用于单CPU环境下的client模式 ParNew 并行 ...

  9. JVM中的垃圾回收器

    文章目录 概述 垃圾回收器分类 GC的性能指标 HotSpot虚拟机中的垃圾收集器 Serial 垃圾收集器(单线程) Serial Old 垃圾收集器(单线程) ParNew 垃圾收集器 Paral ...

  10. JVM专题之垃圾回收器

    一 如何寻找垃圾对象 1.1 引用计数法 每一个对象有一个计数器,当被别的对象引用的时候,则会递增计数器:当别人释放或者引用失效的时候则递减计数器,如果在垃圾回收的时候,引用计数器为0,则表示这个对象 ...

最新文章

  1. Quartz.NET的管理工具
  2. IOS 非常流畅的滑动tableView
  3. Vim的一些使用技巧
  4. 014 怪物过滤的设计和实现
  5. 工业4.0技术路线图 - OPC UA
  6. vulkan api_Vulkan开放标准API支持,针对Linux的新游戏以及更多游戏
  7. Web 开发中使用了 Vim 作为主编辑器之后......
  8. cmos和ttl_CMOS与TTL电路的详细对比区别
  9. git文件没有绿色红色小图标
  10. 请求头添加token
  11. 微信公众平台配置服务器之后实现自动回复
  12. win10开启热点后电脑无法打开网页
  13. C++析取器在代码自动化测试中的应用
  14. 【python10个小实验】2、石头、剪刀、布
  15. java问卷导入excel_Java利用已有的Excel文件导出新的Excel
  16. cocos2dx android obb,cocos2dx 实现obb包读取 quick2.2.6
  17. AI WORLD2016世界人工智能大会:中国力量崛起
  18. su - xxx Could not create session 无法su切换用户
  19. 【Kubernetes】Pod学习(十五)Deployment部署的回滚、暂停和恢复
  20. pytorch_nicp编译

热门文章

  1. 技术债治理的三条原则
  2. 字体变形html,SVG文字变形动画特效
  3. 域服务器无法修改域账户密码,域用户使用Ctrl+Alt+del不能修改密码
  4. 全息投影的发展潜力不可估量,百度神灯搜索不是梦
  5. 各有风采:影响全世界的100位帝王排行榜
  6. 贤内助——ICMP协议
  7. Python2/3的中、英文字符编码与解码输出: UnicodeDecodeError: 'ascii' codec can't decode/encode...
  8. bzoj4484[Jsoi2015]最小表示 拓补排序+bitset
  9. LOJ 6198. 谢特(后缀数组+可持久化Trie)
  10. css实现一个三角形