Serial收集器

Serial收集器是最基本、历史最悠久的收集器。这个收集器是一个单线程的收集器。它在进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。Serial收集器是新生代的收集器。采用的复制算法。

ParNew收集器

ParNew收集器其实就是Serial收集器的多线程版本,除了使用多线程进行垃圾收集之外,其余的和Serial收集器都是一样的。它是运行在Server模式下的虚拟机中首选的新生代收集器。其中有一个很重要的原因是除了Serial收集器外,目前只有它能与CMS收集器配合工作。

Parallel Scavenge收集器

Parallel Scavenge收集器是一个新生代收集器,它也是采用复制算法的收集器,又是并行的多线程收集器。

Parallel Scavenge收集器的特点是它的关注点与其他收集器不同,CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间,而Paralel Scavenge收集器的目标则是达到一个可控制的吞吐量。

由于与吞吐量关系密切,Parallel Scavenge收集器也经常称为“吞吐量优先”收集器。

Serial Old收集器

Serial Old是Serial收集器的老年代版本,它同样是一个单线程收集器,使用“标记-整理”算法。Serial和Serial Old收集器的主要意义都是在于给Client模式下虚拟机使用。还有另外两个用途,一种用途是在JDK1.5以及之前的版本中与Parallel Scavenge收集器搭配使用,另一种用途就是作为CMS收集器的后备元,在并发收集发生Concurrent Mode Failure时使用。

Parallel Old收集器

Parallel Old是Parallel Scavenge收集器的老年代版本,使用多线程和“标记-整理”算法。

CMS收集器

CMS收集器是一种以获取最短回收停顿时间为目标的收集器。CMS收集器是基于“标记-清除”算法实现的。它的运行过程分为4个步骤。

1、  初始标记

2、  并发标记

3、  重新标记

4、  并发清除

  其中,初始标记、重新标记这两个步骤仍然需要“Stop The World”。初始标记仅仅只是标记一下GC Roots能直接关联到的对象,速度很快,并发标记阶段就是进行GC Roots Tracing的过程,而重新标记则是为了修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段稍长一些,但远比并发标记的时间短。

  由于整个过程中耗时最长的并发标记和并发清除过程收集器线程都可以与用户线程一起工作。所以,从总体上来说,CMS收集器的内存回收过程是与用户线程一起并发执行的。

CMS收集器的缺点:

  CMS收集器对CPU资源非常敏感。在并发阶段,它虽然不会导致用户线程停顿,但是会因为占用了一部分线程而导致应用程序变慢,总吞吐量降低。CMS默认启动的回收线程数是(CPU数量+3)/4,如果服务器的CPU数量很多,就会造成用户程序的执行速度变慢。

  CMS收集器无法处理浮动垃圾。可能出现“Concurrent Mode Failure”失败而导致另一次Full GC的产生。

  CMS收集器是一款基于“标记-清除”算法实现的收集器,这意味着收集结束时会有大量内存碎片产生。为了解决这个问题,CMS收集器提供了一个参数,用于在CMS收集器顶不住要进行Full GC时开启内存碎片合并整理过程,内存整理过程是无法并发的,内存碎片没有了,但停顿时间不得不变长。

转载于:https://www.cnblogs.com/fhhk/p/7413655.html

一步一步学JVM-垃圾回收器相关推荐

  1. Jvm垃圾回收器(终结篇)

    知识回顾: 第一篇<Jvm垃圾回收器(基础篇)>主要讲述了判断对象的生死?两种基础判断对象生死的算法.引用计数法.可达性分析算法,方法区的回收.在第二篇<Jvm垃圾回收器(算法篇)& ...

  2. JVM 垃圾回收器工作原理及使用实例介绍

    2019独角兽企业重金招聘Python工程师标准>>> 垃圾收集基础 Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况.自 ...

  3. JVM垃圾回收器工作原理及使用实例介绍

    垃圾收集基础 Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况.自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担. 拥 ...

  4. JVM 垃圾回收器工作原理及使用实例介绍(原文已发表于IBM开发者论坛)

    打个广告,本人的<大话Java性能优化>一书已经在亚马逊.当当.京东.天猫出售,感谢大家对致力于技术推广梦想者的支持. 垃圾收集基础 Java 语言的一大特点就是可以进行自动垃圾回收处理, ...

  5. JVM 垃圾回收器 ZGC

    JVM 垃圾回收器 ZGC简介 学习ZGC,主要通过学习ZGC设计与实现书籍,并以博客的形式记录学习内容 ZGC在JDK11引入,目前被标记为实验性质.ZGC的出现是为了解决G1的不足. G1不足之处 ...

  6. JVM垃圾回收器(Hotspot)

    JVM垃圾回收器发展与对比 一,GC回收算法: 1,引用计数法 对象中使用计数器.此算法无法解决互相引用的场景. 2,可达性分析算法 从gcRoots集合出发,查找引用链,如没有链路链接的对象,则初次 ...

  7. c++ 多线程 垃圾回收器_7种jvm垃圾回收器,这次全部搞懂

    前言 之前我们讲解了jvm的组成结构与垃圾回收算法等知识点,今天我们来讲讲jvm最重要的堆内存是如何使用垃圾回收器进行垃圾回收,并且如何使用命令去配置使用这些垃圾回收器. 堆内存详解 上面这个图大家应 ...

  8. JVM垃圾回收器G1详解

    1.概述 在我们应用程序所应对的业务越来越庞大.复杂,用户越来越多,没有GC就不能保证应用程序正常进行,而经常造成STW的GC又跟不上实际的需求,我们需要不断地尝试对GC进行优化.G1(Garbage ...

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

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

  10. JVM垃圾回收器 七种经典垃圾回收器

    文章目录 垃圾回收器概述 评估GC的性能指标 吞吐量(throughput) 暂停时间(pause time) 七种经典的垃圾回收器 垃圾收集器组合关系 Serial回收器 串行回收 ParNew回收 ...

最新文章

  1. 预测汽车级Linux专业技术的需求
  2. excel mysql日报_Excel日报自动化
  3. Android PowerImageView实现,可以播放动画的强大ImageView
  4. 程序员幽默:伤不起,我就是这样的程序员
  5. python 音速_中国大学MOOC的APP(慕课)2021用Python玩转数据章节答案
  6. 116_Power Pivot 先进先出原则库龄库存计算相关
  7. 商汤春招特别策划-春招百晓生系列空宣第2期,助你收获心动的offer
  8. js的正则表达,只允许数字和特殊
  9. SpringMvc Eclipse搭建web项目
  10. 手机能识别sim卡但是没信号_一篇文章扫盲手机SIM卡相关知识
  11. 遗传算法学习及matlab代码
  12. 学生信息管理系统(一)——登录窗体
  13. javasript | 鼠标经过表格行变色
  14. windows使用administrator用户还是没有权限
  15. 《本科-线性代数笔记-精简汇总》,纯手工!
  16. actor 模型原理 (一)
  17. vuex中strict严格模式
  18. [bootstrap]如何使用modal
  19. AM335x启动流程(BootRom-MLO-Uboot)
  20. 如图,甲乙两人分别在AB两地同时相向而行,于E处相遇后,甲继续向B地行走,乙则休息了14分钟,在继续向A地行走,甲和乙到达B和A后立即折返,又在E处相遇,已知甲每分钟行走60米,乙每分钟行走80米

热门文章

  1. 网络营销推广软件浅析网络优化时该如何更好的判断友链的质量?
  2. 网络推广中网络推广专员如何培养与搜索引擎的友好度和信任度
  3. robots协议是什么?对网站SEO有什么好处?
  4. 企业网络推广——企业网络推广更注重网站内部链接优化!
  5. 网站优化有三个重点不能忽视
  6. apache 查看本地页面_GeoSever的页面实现
  7. hadoop python入门_MRJob 极速入门,Python玩转Hadoop你会么?
  8. mysql更新linux_MySQL更新语句UPDATE深入探索
  9. 开发日记-20190426 关键词 无限分级界面
  10. Druid:一个用于大数据实时处理的开源分布式系统——大数据实时查询和分析的高容错、高性能开源分布式系统...