首先看一下收集器的分布:

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配合使用?相关推荐

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

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

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

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

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

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

  4. 【Java 虚拟机原理】垃圾收集器 ( Serial | ParNew | Parallel Scavenge | CMS | Serial Old - MSC | Parallel Old )

    文章目录 前言 一.HotSpot 虚拟机的垃圾收集器 二.年轻代垃圾收集器 1. 串行收集器 ( Serial ) 2. ParNew 收集器 3. Parallel Scavenge 收集器 二. ...

  5. 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收集器 ...

  6. Serial Old收集器和Parallel Old收集器

    Serial Old收集器 Serial Old是 Serial收集器的老年代版本: 1.特点 针对老年代: 采用"标记-整理"算法(还有压缩,Mark-Sweep-Compact ...

  7. 我的读书笔记——Paralled Scavenge 收集器

    我的读书笔记 Parallel Scavenge 收集器 ​ Paralled Scavenge 收集器是一个新生代收集器,他也是使用复制算法的收集器,又是使用并行的多线程收集器.这个收集器的特点是他 ...

  8. 深入理解Java虚拟机——Parallel Old收集器

    目录 一.Parallel Old收集器的概述 二.Parallel Old收集器运行示意图 一.Parallel Old收集器的概述 Parallel Old收集器是Parallel Scaveng ...

  9. 【jvm我能讲两小时056】说说Parallel old收集器的特点以及使用场景?

    说说Parallel old收集器的特点以及使用场景? Parallel Old是Parallel Scavenge收集器的老年代版本, 支持多线程并发收集, 基于标记-整理算法实现 . 这个收集器 ...

  10. Parallel Old收集器

    Parallel Old收集器是Parallel Scavenge收集器的老年代版本,使用多线程和"标记-整理算法"进行垃圾回收. 吞吐量优先

最新文章

  1. 《文献检索》随感-2003年10月24日
  2. webstorm javascript IDE调试
  3. 用JSP实现上传文件的两种方法
  4. python异常处理_汇总三大python异常处理、自定义异常、断言原理与用法分析
  5. android新建view类,android – 无法创建ViewModel类的实例(无法启动活动ComponentInfo)
  6. Visual Stdio2013 编译错误【error C4996:'scanf':This function or variable may be unsafe.】最简单的解决方法
  7. JDK源码(11)-Long、Short
  8. 单张图片上传预览【超简洁,未完待续】
  9. iOS平台上的MVVM模式(译文)
  10. js怎么select 选中的值
  11. 通过anaconda安装jupyter lab
  12. 心路历程5:雨天 --by Tsui
  13. 【Codeforces Round #544 (Div. 3)】K Balanced Teams【线性DP】
  14. 如何用VS2015手撕白菜
  15. 富士通Fujitsu DPK750 Pro 打印机驱动
  16. html5qq授权登陆,php 第三方登陆接入qq互联
  17. Intel(R) Ethernet connection (2) I219-LM 设置抓取VLAN tag报文
  18. 北京亚控笔试题目(2014年10月9日)
  19. 人人商城商品分享码添加用户的头像和昵称
  20. 计算机网络的有线接入,台式电脑怎么连接有线网络

热门文章

  1. SpringMVC 配置定时执行任务
  2. java json 乱码问题_java中json传输数据乱码问题
  3. css中关于旋转属性trtransform: rotate影响文字轻微变形的解决办法。
  4. No qualifying bean of type ‘service‘ available:单元测试报错
  5. 域名的分类:com,cn,net的区别
  6. python求偏导_python中几种自动微分库解析
  7. 中台实践:数据中台建设五步法
  8. DMAC计算机组成原理,计算机组成原理
  9. JavaScript工具类:util.js用法实例
  10. 接受数据的php文件源码,PHP文件上传源码分析(RFC1867)