Parallel垃圾回收器总结
目录
一、概述
二、参数配置
一、概述
HotSpot的年轻代中除了拥有ParNew收集器是基于并行回收的以外,Parallel Scavenge收集器同样也采用了复制算法、并行回收和"Stop the World"机制。
那么Parallel 收集器的出现是否多此一举?
- 和ParNew收集器不同,Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量,它也被称为吞吐量优先的垃圾收集器。
- 自适应调节策略也是Parallel Scavenge与ParNew一个重要区别。
高吞吐量则可以高效率地利用CPU时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。因此,常见在服务器环境中使用。例如,那些执行批量处理、订单处理、工资支付、科学计算的应用程序。
Parallel收集器在JDK1.6时提供了用于执行老年代垃圾收集的Parallel old收集器,用来代替老年代的serial old收集器。
Parallel old收集器采用了标记-压缩算法,但同样也是基于并行回收和"stop-the-World"机制。
在程序吞吐量优先的应用场景中,Parallel收集器和Parallel old收集器的组合,在server模式下的内存回收性能很不错。在Java8中,默认是此垃圾收集器 => 【Parallel Scavenge / Parallel old】
二、参数配置
- -XX:+UseParallelGC
手动指定年轻代使用Parallel并行收集器执行内存回收任务,默认jdk8是开启的。
- -XX:+UseParalleloldGC
手动指定老年代使用并行回收收集器。默认jdk8是开启的。与-XX:+UseParallelGC互相激活,只要开启一个,另外一个就自动开启。
- -XX:ParallelGCThreads
设置年轻代并行收集器的线程数。一般地,最好与CPU数量相等,以避免过多的线程数影响垃圾收集性能。
在默认情况下,当CPU数量小于8个,ParallelGCThreads的值等于CPU数量。当CPU数量大于8个,ParallelGCThreads的值等于3 + [ 5 * CPU数量] / 8 ]。
- -XX:MaxGCPauseMillis
设置垃圾收集器最大停顿时间(即STW的时间),单位是毫秒。
为了尽可能地把停顿时间控制在MaxGCPauseMills以内,收集器在工作时会调整Java堆大小或者其他一些参数。 对于用户来讲,停顿时间越短体验越好。但是在服务器端,我们注重高并发,整体的吞吐量。所以服务器端适合Parallel,进行控制。该参数使用需谨慎。
- -XX:GCTimeRatio
指定垃圾收集时间占总时间的比例(=1 /(N + 1)),用于衡量吞吐量的大小。
取值范围(0,100)。默认值99,也就是垃圾回收时间不超过1。
与前一个-XX:MaxGCPauseMillis参数有一定矛盾性。暂停时间越长,Radio参数就容易超过设定的比例。
- -XX:+UseAdaptiveSizePolicy
设置Parallel scavenge收集器是否开启自适应调节策略。
在这种模式下,年轻代的大小、Eden和Survivor的比例、晋升老年代的对象年龄等参数会被自动调整,已达到在堆大小、吞吐量和停顿时间之间的平衡点。
在手动调优比较困难的场合,可以直接使用这种自适应的方式,仅指定虚拟机的最大堆、目标的吞吐量(GCTimeRatio)和停顿时间(MaxGCPauseMills),让虚拟机自己完成调优工作。
Parallel垃圾回收器总结相关推荐
- JVM七大垃圾回收器上篇Serial、ParNeW、Parallel Scavenge、 Serial Old、 Parallel Old、 CMS、 G1
GC逻辑分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商.不同版本的JVM来实现. 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本. 从不同角度分析垃圾收 ...
- JVM学习笔记(二):垃圾回收、垃圾回收算法、垃圾回收器(Serial、Parallel、CMC、G1)、内存分配原则实战
垃圾回收 一.判断对象是否可以被回收 1.引用计数计数法 内容:在对象中添加一个引用计数器,每当有一个地方引用它,计数器就加一:当引用失效时,计数器就减一:任何时刻计数器为零的对象都是不可能在被使用的 ...
- 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垃圾回收器(终结篇)
知识回顾: 第一篇<Jvm垃圾回收器(基础篇)>主要讲述了判断对象的生死?两种基础判断对象生死的算法.引用计数法.可达性分析算法,方法区的回收.在第二篇<Jvm垃圾回收器(算法篇)& ...
- JVM 垃圾回收器工作原理及使用实例介绍
2019独角兽企业重金招聘Python工程师标准>>> 垃圾收集基础 Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况.自 ...
- 【不同的Java垃圾回收器的比较】
现在已经是2014年了,但是对大多数开发人员而言有两件事情仍然是个谜--java垃圾回收以及异性(码农又被嘲笑了).由于我对后者也不是特别了解,我想我还是试着说说前者吧,尤其是随着Java8的到来,这 ...
- system.gc会立即执行垃圾回收吗_JVM垃圾回收系列之 垃圾回收器
java垃圾收集器的分类以及特点如下所示: 1.串行垃圾回收器.这是一个单线程的收集器,就是说在gc回收的时候,无论是年轻代还是老年代,都是一个线程去执行,并且在执行期间,挂起用户线程,直到收集工作完 ...
- Java GC系列(3):垃圾回收器种类
2019独角兽企业重金招聘Python工程师标准>>> Java有四种类型的垃圾回收器: 串行垃圾回收器(Serial Garbage Collector) 并行垃圾回收器(Para ...
- [JVM 相关] Java 新型垃圾回收器(Garbage First,G1)
回顾传统垃圾回收器 HotSpot 垃圾收集器实现 Serial Collector(串型收集器) 使用场景,大多数服务器是单核CPU. 适用收集场景:1. 新生代收集(Young Generatio ...
最新文章
- Android app被系统kill的场景
- generate报错 make_如何安装opencv_contrib及解决其安装编译问题
- C/C++位域结构深入解析
- python教学视频a_2019何老师一个月带你玩转Python分布式爬虫实战教程视频(视频+源码)...
- oracle安装 衍生进程已退出,linux安装oracle 出现问题
- python脚本运行命令_从Python脚本运行shell命令
- Python下面向对象的三大实例
- spring 配置文件被加载两次
- 开课吧python小课学了有用吗-这个神仙技能,让你为所欲为!速来 !
- 使用hexo+github搭建免费个人博客详细教程
- Python——Fraction类处理分数
- Matlab自适应均线_DMA指标(离差移动平均)matlab源代码
- python利用公式计算_Python利用openpyxl处理Excel文件(公式实例)
- Spire.Doc 获取批注的源头+书签+内容
- BERT破的11项纪录具体都是什么?
- Robocup 2D新手导读(入门总结)
- vue点击按钮打开新页签,并传参
- 春招进来的新人23岁Java开发上来秀了波操作,真是扮猪吃老虎
- 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛
- ros软路由加h3c交换机搭建企业网络环境
热门文章
- python3 读取文件夹的文件标题,提取小数,并计算数字和
- 算法: 删除链表中的数据Remove Linked List Elements
- android ram压力测试,android用memtester内存压力测试
- mysql觸發器_mysql觸發器案例
- java图的邻接表实现两种方式及实例应用分析
- 结构风险最小和VC维理论的解释
- hadoop2.2完全分布式最新高可靠安装文档
- Raki的读paper小记:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
- Redis 和 memcached 区别(二)
- 如何高效的批量删除亿级大表数据