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

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)

在达到前面两个目标的情况下,尽量减少堆的内存空间;

可以获得更好的空间局部性;

更多Parallel Scavenge收集器的信息请参考:

官方的垃圾收集调优指南 第6节:http://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#parallel_collector

上面介绍的都是新生代收集器,接下来开始介绍老年代收集器;

java scavenge_Java虚拟机(JVM)垃圾回收器Parallel Scavenge收集器 - Break易站相关推荐

  1. java虚拟机收集器_Java虚拟机(JVM)垃圾回收器G1收集器 - Break易站

    G1收集器 G1(Garbage-First)是JDK7-u4才推出商用的收集器: 1.特点 (A).并行与并发 能充分利用多CPU.多核环境下的硬件优势: 可以并行来缩短"Stop The ...

  2. java 几种垃圾回收器,关于java:7种jvm垃圾回收器这次全部搞懂

    前言 之前咱们解说了jvm的组成构造与垃圾回收算法等知识点,明天咱们来讲讲jvm最重要的堆内存是如何应用垃圾回收器进行垃圾回收,并且如何应用命令去配置应用这些垃圾回收器. 堆内存详解 [腾讯云]云产品 ...

  3. 深入理解Java虚拟机——JVM垃圾回收机制和垃圾收集器详解

    一:概述 说起垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,顾名思义,垃圾回收就是释 ...

  4. 【Android 内存优化】垃圾回收算法 ( 分代收集算法 | Serial 收集器 | ParNew 收集器 | Parallel Scavenge 收集器 | CMS 并发标记清除收集器 )

    文章目录 一. 分代收集算法 二. 垃圾回收器 / 收集器 ( GC ) 三. 串行收集器 ( Serial ) 四. ParNew 收集器 五. Parallel Scavenge 收集器 六. C ...

  5. Jvm垃圾收集器总结之 Parallel Scavenge 收集器

    Parallel Scavenge 收集器是个新生代收集器.它也是使用复制算法的收集器,又是并行的多线程收集器....看上去和ParNew 都一样,那它有什么特别之处呢? Parallel Scave ...

  6. Parallel Scavenge收集器:吞吐量优先

    Parallel Scavenge收集器,是年轻代中除了ParNew以外的另一款垃圾收集器,同样采用了并行回收.复制算法和"Stop The World"机制. 那么它和ParNe ...

  7. JVM垃圾回收器之Shenandoah收集器

    Shenandoah,第一款不由Oracle(包括以前的Sun)公司的虚拟机团队所领导开发的HotSpot垃圾收集器,这个项目的目标 是实现一种能在任何堆内存大小下都可以把垃圾收集的停顿时间限制在十毫 ...

  8. java线程中的死锁_Java多线程中的死锁 - Break易站

    Java 多线程 synchronized关键字用于使类或方法线程安全,这意味着只有一个线程可以锁定同步方法并使用它,其他线程必须等到锁定释放并且其中任何一个获得该锁定. 如果我们的程序在多线程环境中 ...

  9. java url类_Java中的URL类和示例 - Break易站

    URL类是Internet上任何可用资源的网关.类URL表示统一资源定位符,它是指向万维网上"资源"的指针.资源可以指向简单的文件或目录,也可以引用更复杂的对象,例如对数据库或搜索 ...

  10. java map isempty_Java中HashMap的isEmpty()方法: HashMap.isEmpty() - Break易站

    Java中的HashMap HashMap类的java.util.HashMap.isEmpty() 方法用于检查映射的空白.如果HashMap中没有键值对或映射,则该方法返回True,否则返回Fal ...

最新文章

  1. 面试官问我:spring、springboot、springcloud的区别,我笑了
  2. python getattr函数_[转]Python中的getattr()函数详解
  3. 那些在11gR2中可能惹祸的新特性,一张列表帮助你摆脱升级11gR2带来的烦恼
  4. 白国涛:磐基PaaS平台推动中国移动数字化转型
  5. 编辑服务器上的文件,Sublime Text编辑远程Linux服务器上的文件
  6. 天津计算机本科学校有哪些专业吗,天津哪些大学有人工智能专业
  7. java跳出循环break;return;continue使用
  8. extjs FormPanel更改为普通表单提交,提交到iframe显示
  9. 洛谷——P2637 第一次,第二次,成交
  10. Failed to load VMMR0.r0 (VERR_SUPLIB_OWNER_NOT_ROOT)
  11. linux 安装adobe字体,Adobe Creative Cloud应用程序已更新,为iOS 13和iPadOS提供免费的自定义字体...
  12. matlab leslie模型,【2017年整理】leslie人口增长模型模型.doc
  13. 【渝粤题库】陕西师范大学201821 宋词研究 作业(专升本)
  14. 12.计算机网络---iptables防火墙管理工具
  15. oracle11g静默安装
  16. 如何修改PC端微信消息提示音
  17. 综述:当医学影像遇上深度学习
  18. 双像空间前方交会方法(一)---点投影系数方法
  19. 模拟黑洞图像_全息图像模拟黑洞计划一一物理学家们的下一个宏伟目标
  20. GVP(Go 领域最具价值专家) 群像终揭晓,附竞猜获奖名单

热门文章

  1. Geoserver通过SLD配置道路线样式,随着放大加粗
  2. java 实现word文档的在线签批圈阅(手写批注)
  3. 运行不了cracker.jar?激活MyEclipse
  4. CSS实现平行四边形
  5. CodeForces55A - Flea travel 解题报告
  6. Python实现自动录制虎牙直播
  7. 【生活】驾照C1-科二手册
  8. cf1504E - Travelling Salesman Problem
  9. 公章,加盖公章,英语怎么说?
  10. 二叉树基础题(五):二叉树的下一个节点最低公共祖先节点