垃圾收集器GC中parallel scavenge收集器为什么不能CMS配合使用?
首先看一下收集器的分布:
1.解答parallel scavenge收集器为什么不能CMS配合使用?
首先讲一下Hotspot,HotSpot VM里多个GC有部分共享的代码。有一个分代式GC框架,Serial/Serial Old/ParNew/CMS都在这个框架内;在该框架内的young collector和old collector可以任意搭配使用,所谓的“mix-and-match”。
而ParallelScavenge与G1则不在这个框架内,而是各自采用了自己特别的框架。这是因为新的GC实现时发现原本的分代式GC框架用起来不顺手。
ParallelScavenge(PS)的young collector就如其名字所示,是并行的拷贝式收集器。本来这个young collector就是“Parallel Scavenge”所指,但因为它不兼容原本的分代式GC框架,为了凸显出它是不同的,所以它的young collector带上了PS前缀,全名变成PS Scavenge。对应的,它的old collector的名字也带上了PS前缀,叫做PS MarkSweep。
这个PS MarkSweep默认的实现实际上是一层皮,它底下真正做mark-sweep-compact工作的代码是跟分代式GC框架里的serial old(这个collector名字叫做MarkSweepCompact)是共用同一份代码的。也就是说实际上PS MarkSweep与MarkSweepCompact在HotSpot VM里是同一个collector实现,包了两张不同的皮;这个collector是串行的。
最后:
重点就是Parallel Scavenge没有使用原本HotSpot其它GC通用的那个GC框架,所以不能跟使用了那个框架的CMS搭配使用。
新生代:使用复制算法进行GC。
老年代:使用标记-整理算法。
并发:(concurrent)用户线程与垃圾收集器同时执行(但不一定并行的,可能会交替执行)
并行:(parallel)多条垃圾手机线程并行,用户线程仍然等待。
1.新生代收集器
serial收集器:是新生代的一个单线程的GC,,进行GC时,停掉所有用户线程,直至回收结束,“stop-the-world”。但是其单线程的简单高效,没有线程交互的开销,常被JVM运行在client模式下的默认新生代收集器。
ParNew:并行收集器,是serial收集器的多线程的版本。是运行在server模式下的首先的新生代的收集器。
parallel scavenge :新生代收集器,多线程,并行收集。
此收集器与之前的收集器目的不同:(特点)达到一个可控制的吞吐量。吞吐量=运行用户代码时间/CPU总执行时间。
用于精确吞吐量的两个参数:1.控制最大垃圾收集停顿时间参数 2.直接设置吞吐量大小的参数。Parallel scavenge收集器与ParNew收集器重要区别是: 垃圾自适应调节策略。
2.老年代收集器
serial old:老年代收集器版本,单线程。
用途:1.在JDK1.5版本之前与parallel scavenge 收集器搭配使用。
2.作为CMS收集器的后备预案。
Parallel Old :使用多线程收集。吞吐量优先。
CMS:
1.目标是:尽量缩短垃圾回收时间和用户线程的停顿时间
2.严格意义上第一款并发垃圾回收器
3.主要场景在 互联网 B/S 架构上
4.使用标记清除算法
5.步骤
5.1 初始标记:STW、快;GC Root 能直接关联的对象
5.2 并发标记:并发;GC Root Tracing 的过程
5.3 重新标记:STW、快;修复并发标记阶段 用户线程运行时变动的对象
5.4 并发清除:并发
6.因为整个过程中耗时最长的 “并发标记”和“并发清除”是和用户线程并发执行的,所以可认为CMS回收器是和用户线程并发执行的
垃圾收集器GC中parallel scavenge收集器为什么不能CMS配合使用?相关推荐
- Jvm垃圾收集器总结之 Parallel Scavenge 收集器
Parallel Scavenge 收集器是个新生代收集器.它也是使用复制算法的收集器,又是并行的多线程收集器....看上去和ParNew 都一样,那它有什么特别之处呢? Parallel Scave ...
- 【Android 内存优化】垃圾回收算法 ( 分代收集算法 | Serial 收集器 | ParNew 收集器 | Parallel Scavenge 收集器 | CMS 并发标记清除收集器 )
文章目录 一. 分代收集算法 二. 垃圾回收器 / 收集器 ( GC ) 三. 串行收集器 ( Serial ) 四. ParNew 收集器 五. Parallel Scavenge 收集器 六. C ...
- Parallel Scavenge收集器:吞吐量优先
Parallel Scavenge收集器,是年轻代中除了ParNew以外的另一款垃圾收集器,同样采用了并行回收.复制算法和"Stop The World"机制. 那么它和ParNe ...
- 【Java 虚拟机原理】垃圾收集器 ( Serial | ParNew | Parallel Scavenge | CMS | Serial Old - MSC | Parallel Old )
文章目录 前言 一.HotSpot 虚拟机的垃圾收集器 二.年轻代垃圾收集器 1. 串行收集器 ( Serial ) 2. ParNew 收集器 3. Parallel Scavenge 收集器 二. ...
- 27.垃圾收集器(Serial收集器、ParNew收集器、Parallel收集器、Parallel Old 收集器、CMS收集器、G1收集器、常用的收集器组合)
27.垃圾收集器 27.1.Serial收集器 27.2.ParNew收集器 27.3.Parallel收集器 27.4.Parallel Old 收集器 27.5.CMS收集器 27.6.G1收集器 ...
- Serial Old收集器和Parallel Old收集器
Serial Old收集器 Serial Old是 Serial收集器的老年代版本: 1.特点 针对老年代: 采用"标记-整理"算法(还有压缩,Mark-Sweep-Compact ...
- 我的读书笔记——Paralled Scavenge 收集器
我的读书笔记 Parallel Scavenge 收集器 Paralled Scavenge 收集器是一个新生代收集器,他也是使用复制算法的收集器,又是使用并行的多线程收集器.这个收集器的特点是他 ...
- 深入理解Java虚拟机——Parallel Old收集器
目录 一.Parallel Old收集器的概述 二.Parallel Old收集器运行示意图 一.Parallel Old收集器的概述 Parallel Old收集器是Parallel Scaveng ...
- 【jvm我能讲两小时056】说说Parallel old收集器的特点以及使用场景?
说说Parallel old收集器的特点以及使用场景? Parallel Old是Parallel Scavenge收集器的老年代版本, 支持多线程并发收集, 基于标记-整理算法实现 . 这个收集器 ...
- Parallel Old收集器
Parallel Old收集器是Parallel Scavenge收集器的老年代版本,使用多线程和"标记-整理算法"进行垃圾回收. 吞吐量优先
最新文章
- 《文献检索》随感-2003年10月24日
- webstorm javascript IDE调试
- 用JSP实现上传文件的两种方法
- python异常处理_汇总三大python异常处理、自定义异常、断言原理与用法分析
- android新建view类,android – 无法创建ViewModel类的实例(无法启动活动ComponentInfo)
- Visual Stdio2013 编译错误【error C4996:'scanf':This function or variable may be unsafe.】最简单的解决方法
- JDK源码(11)-Long、Short
- 单张图片上传预览【超简洁,未完待续】
- iOS平台上的MVVM模式(译文)
- js怎么select 选中的值
- 通过anaconda安装jupyter lab
- 心路历程5:雨天 --by Tsui
- 【Codeforces Round #544 (Div. 3)】K Balanced Teams【线性DP】
- 如何用VS2015手撕白菜
- 富士通Fujitsu DPK750 Pro 打印机驱动
- html5qq授权登陆,php 第三方登陆接入qq互联
- Intel(R) Ethernet connection (2) I219-LM 设置抓取VLAN tag报文
- 北京亚控笔试题目(2014年10月9日)
- 人人商城商品分享码添加用户的头像和昵称
- 计算机网络的有线接入,台式电脑怎么连接有线网络
热门文章
- SpringMVC 配置定时执行任务
- java json 乱码问题_java中json传输数据乱码问题
- css中关于旋转属性trtransform: rotate影响文字轻微变形的解决办法。
- No qualifying bean of type ‘service‘ available:单元测试报错
- 域名的分类:com,cn,net的区别
- python求偏导_python中几种自动微分库解析
- 中台实践:数据中台建设五步法
- DMAC计算机组成原理,计算机组成原理
- JavaScript工具类:util.js用法实例
- 接受数据的php文件源码,PHP文件上传源码分析(RFC1867)