`
yinwufeng
  • 浏览: 277095 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Parallel Scavenge收集器详解

    博客分类:
  • JVM
阅读更多

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

Parallel Scavenge收集器的特点是它的关注点与其他收集器不同,CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throughput)。所谓吞吐量就是CPU用于运行用户代码的时间与CPU总消耗时间的比值,即吞吐量 = 运行用户代码时间 /(运行用户代码时间 + 垃圾收集时间),虚拟机总共运行了100分钟,其中垃圾收集花掉1分钟,那吞吐量就是99%。

停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户体验,而高吞吐量则可以高效率地利用CPU时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。

Parallel Scavenge收集器提供了两个参数用于精确控制吞吐量,分别是控制最大垃圾收集停顿时间的-XX:MaxGCPauseMillis参数以及直接设置吞吐量大小的-XX:GCTimeRatio参数。

MaxGCPauseMillis参数允许的值是一个大于0的毫秒数,收集器将尽可能地保证内存回收花费的时间不超过设定值。不过大家不要认为如果把这个参数的值设置得稍小一点就能使得系统的垃圾收集速度变得更快,GC停顿时间缩短是以牺牲吞吐量和新生代空间来换取的:系统把新生代调小一些,收集300MB新生代肯定比收集500MB快吧,这也直接导致垃圾收集发生得更频繁一些,原来10秒收集一次、每次停顿100毫秒,现在变成5秒收集一次、每次停顿70毫秒。停顿时间的确在下降,但吞吐量也降下来了。

GCTimeRatio参数的值应当是一个大于0且小于100的整数,也就是垃圾收集时间占总时间的比率,相当于是吞吐量的倒数。如果把此参数设置为19,那允许的最大GC时间就占总时间的5%(即1 /(1+19)),默认值为99,就是允许最大1%(即1 /(1+99))的垃圾收集时间。

由于与吞吐量关系密切,Parallel Scavenge收集器也经常称为“吞吐量优先”收集器。除上述两个参数之外,Parallel Scavenge收集器还有一个参数-XX:+UseAdaptiveSizePolicy值得关注。这是一个开关参数,当这个参数打开之后,就不需要手工指定新生代的大小(-Xmn)、Eden与Survivor区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等细节参数了,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或者最大的吞吐量,这种调节方式称为GC自适应的调节策略(GC Ergonomics)。如果读者对于收集器运作原来不太了解,手工优化存在困难的时候,使用Parallel Scavenge收集器配合自适应调节策略,把内存管理的调优任务交给虚拟机去完成将是一个不错的选择。只需要把基本的内存数据设置好(如-Xmx设置最大堆),然后使用MaxGCPauseMillis参数(更关注最大停顿时间)或GCTimeRatio(更关注吞吐量)参数给虚拟机设立一个优化目标,那具体细节参数的调节工作就由虚拟机完成了。自适应调节策略也是Parallel Scavenge收集器与ParNew收集器的一个重要区别。

分享到:
评论

相关推荐

    JVM入门实战/arthas实战/垃圾回收算法/垃圾回收器/jvm内存模型分析

    1.3Parallel Scavenge收集器 1.4Parallel Old收集器 1.5CMS(Current Mark Sweep)收集器 1.6G1收集器 第六节:JVM参数调优 1.1 JVM重要参数介绍 1.2JVM参数调优 1.3JVM参数设置思路1.4JVM调优常用指令说明 第七...

    《剑指offer》JVM面试题总结.pdf

    JVM 面试题总结 ...Parallel Scavenge 收集器 Serial Old 收集器 Parallel Old 收集器 CMS 收集器 Garbage First 收集器 JVM 常用命令介绍 什么是双亲委派模型? 双亲委派模型的缺陷? 双亲委派机制的三次破坏

    07.垃圾回收器1

    1.Serial收集器(串垃圾收集器) 2.ParNew收集器(串多线程垃圾收集器) 3.Parallel Scavenge收集器 4.Serial old收集

    oracle的Parallel_并行技术案例详解

    oracle的Parallel_并行技术案例详解

    jvm-starter:JVM虚拟机学习之旅

    - 清除算法复制算法标记 - 整理算法分代收集算法垃圾收集器Serial收集器:单线程的收集器,收集时必须暂停其它线程(stop the world)ParNew收集器:Serial收集器的多线程版本Parallel Scavenge收集器::达到一个可...

    JVM内存与垃圾回收课件.zip

    上篇:内存与垃圾回收篇 中篇:字节码与类的加载篇 垃圾回收的几种常用算法...Jvm的垃圾收集器(serial收集器、parnew收集器、parallel scavenge收集器、serial old 收集器、parallel old收集器、cms收集器、g1收集器)

    【JVM和性能优化】2.垃圾回收器和内存分配策略

    清除算法(Mark-Sweep)复制算法(Copying)标记-整理算法(Mark-Compact)GC算法综合用年轻代老年代永久代枚举根节点安全点安全区域GC回收器Serial 收集器ParNew 收集器Parallel Scavenge 收集器Serial Old 收集器...

    并行开发——Parallel[收集].pdf

    并行开发——Parallel[收集].pdf

    JVM讲解视频.zip

    JVM全套教程视频 o类加载机制 java跨平台机制 ...Parallel垃圾收集器详解 CMS垃圾收集器详解 G1垃圾收集器详解 ZGC垃圾收集器详解 三色标记算法 跨代垃圾收集之卡表详解 oJVM调优实战 JDK自带调优

    Parallel_portion Parallel_portion Parallel_portion

    Parallel_portion Parallel_portion Parallel_portion

    英特尔® Parallel Composer 入门详解

    英特尔® Parallel Composer 软件开发产品能够帮助您进行并行编程。您可使用 Microsoft Visual Studio* 集成开发环境(IDE)在 Windows* 操作系统上基于IA-32和Intel®64架构建立和优化 C/C++ 源代码。

    async.js中waterfall、series、parallel的区别

    NULL 博文链接:https://rensanning.iteye.com/blog/2338920

    一文了解JVM全部垃圾回收器,从Serial到ZGC

    常用的7种收集器,其适用的范围如图所示Serial、ParNew、ParallelScavenge用于新生代;CMS、SerialOld、ParalledOld用于老年代。并且他们相互之间以相对固定的组合使用(具体组合关系如上图)。G1是一个独立的收集器...

    js的新生代垃圾回收知识点总结

    新生代的垃圾回收算法 Scavenge GC 算法很简单: 1. 我们维护一个列表,老生代对象每次指向一个新生对象的时候,记录下来;每次删除指向的时候,删除记录。(这样我们就知道新生代对象里面,哪些对象是存活的了) 2....

    Parallel Programming with Python

    Starting with the basics of parallel programming, you will proceed to learn about how to build parallel algorithms and their implementation. You will then gain the expertise to evaluate problem ...

    Parallel Computer Architecture - A Hardware Software Approach

    The most exciting development in parallel computer architecture is the convergence of traditionally disparate approaches on a common machine structure. This book explains the forces behind this ...

    jmeter-parallel-0.9.jar

    使用并发控制器,把网页浏览器并发请求的页面配置于同一个并发控制器之内。 安装配置: JDK1.8或以上; Jmeter5.0或以上; 拷贝jmeter-parallel-0.9.jar到Jmeter/lib/ext上。 启动Jmeter。 根据需要添加Parallel ...

    Wrox.Parallel.Programming.with.Intel.Parallel.Studio.XE.2012

    Optimize code for multi-core processors with Intel’s Parallel Studio Parallel programming is rapidly becoming a “must-know” skill for developers. Yet, where to start? This teach-yourself tutorial ...

Global site tag (gtag.js) - Google Analytics