新生代收集器

Serial New

  • 单线程收集器,工作时必须暂停其他线程;
  • 简单高效,没有线程交互开销;
  • 基于复制算法;

Parallel New

  • 对Serial的改进,多线程;
  • CPU数量<4时,性能并不比Serial好;
  • CMS新生代的默认收集器;
  • 基于复制算法;

Parallel Scavenge

  • 复制算法;
  • 更关注吞吐量,吞吐量 = 运行用户代码时间 / (运行用户代码时间 + 垃圾收集时间);
  • 不能和CMS配合工作

老年代收集器

Serial Old

  • 标记-整理算法
  • 单线程,性能不行;

Parallel Old

  • Serial Old的多线程版本;
  • 标记-整理算法;

CMS Concurrent Mark Sweep

  • 标记-清除算法;
  • 并发收集器;
    缺点
  • 产生内存碎片较多;
  • 产生浮动垃圾;
  • 并发执行,占用CPU;

CMS收集过程

  1. 初始标记:stop the world,只是做GC Root可达性的初始标记
  2. 并发标记:耗时较长,但可以与用户线程并发执行;
  3. 重新标记:stop the world,标记2中变动的对象;
  4. 并发清除:耗时较长,但可以与用户线程并发执行;

非分代收集器

G1 Garbage First

  • 新生代和老年代由一个个region区组成;
  • 可以独立完成所有区域的内存回收;
  • 标记-整理算法;

G1的工作过程:

  1. 初始标记:同CMS;
  2. 并发标记:耗时较长,分析GC Root到所有对象的可达性。JVM是使用Remembered Set保存了对象引用的调用信息,在可达性分析的时候只需要同时遍历remembered set;
  3. 最终标记:通过Remembered Set日志来记录并发标记时没有记录到的用户线程,在这个阶段将改变合并到Remembered Set中,完成最终标记。
  4. 筛选清除:通过标记整理的算法,根据用户配置的回收时间,和维护的优先级列表,优先收集价值最大的region。收集阶段是基于标记-整理和复制算法;

ZGC

  • JDK11中发布的最新垃圾收集器;
  • 没有分代概念、时间可控,超大堆;
  • 几乎所有阶段都是并发执行;
  • 动态的创建销毁Region

回收过程

  1. 初始停顿标记:停顿JVM,标记存活对象;
  2. 并发标记:并发递归标记其他对象;
  3. 移动对象:找到过期对象,移动到新的Region,然后压缩老的Region;
  4. 修正指针:将指针指向新的地址;

GC收集器的更多相关文章

  1. 学习JVM--垃圾回收(二)GC收集器

    1. 前言 在上一篇文章中,介绍了JVM中垃圾回收的原理和算法.介绍了通过引用计数和对象可达性分析的算法来筛选出已经没有使用的对象,然后介绍了垃圾收集器中使用的三种收集算法:标记-清除.标记-整理.标 ...

  2. JDK1.7 Update14 HotSpot虚拟机GC收集器

    在测试服务器上使用如下命令可以查看当前使用的 GC收集器,当然不止这一个命令可以看到,还有其他一些方式 第三列”=”表示第四列是参数的默认值,而”:=” 表明了参数被用户或者JVM赋值了 [csii@ ...

  3. GC收集器种类

    转载:https://wangkang007.gitbooks.io/jvm/content/la_ji_shou_ji_qi.html 收集器 1.1 Serial(串行)收集器 Serial收集器 ...

  4. A7. JVM 垃圾回收收集器(GC 收集器)

    [概述] 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现.Java 虚拟机规范中对垃圾收集器应该如何实现没有任何规定,因此不同的厂商.不同版本的虚拟机所提供的垃圾处理器都可能会 ...

  5. JVM GC系列 — GC收集器

    一.前言 前文学习了各种GC回收算法,掌握了GC回收的原理,但是真正的GC实现却尤为复杂,本篇文章将主要介绍各种GC收集器. 目前主流的HotSpot VM支持多种虚拟机,这些虚拟机也体现了GC的发展 ...

  6. java虚拟机学习总结之GC回收算法与GC收集器

    GC回收算法 1.标记清除算法分为标记阶段和清除阶段标记阶段:通过特定的判断方式找出无用的对象实例并将其标记清除阶段:将已标记的对象所占用的内存回收缺点:运行多次以后容易产生空间碎片,当需要一整段连续 ...

  7. Java GC收集器配置说明

    根据Java GC收集器具体分类,我们可以看出JVM根据需求不同提供了三种选择:串行收集器.并行收集器.并发收集器. 串行收集器只适用于小数据量的情况,我们主要了解一下并行收集器和并发收集器.默认情况 ...

  8. Serial,Parallel,CMS,G1四大GC收集器特点小结

    1.Serial收集器一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束.特点:CPU利用率最高,停顿时间即用户等待时间比较长.适用场景:小型应用通过JVM参数-XX:+ ...

  9. 转Serial,Parallel,CMS,G1四大GC收集器特点小结

    转 https://blog.csdn.net/u013812939/article/details/48782343 1.Serial收集器 一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有 ...

随机推荐

  1. zabbix值显示的问题

    虽然在创建监控项的时候,是可以选值类型的,目前有的是整型,浮点型,日志,文本,字符串.但是不要误认为zabbix采集数据的时候就是按照这个格式采集的. zabbix各种接口采集到的数据都是字符串类型, ...

  2. DDL 语言

    数据库模式定义语言并非程序设计语言,DDL数据库模式定义语言是SQL语言(结构化查询语言)的组成部分. SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数 ...

  3. kerberos 配置错误记录

    服务端错误记录: 1.服务端在创建数据库的时候报如下错误: # kdb5_util -s -r HADOOP.HOME 错误提示:kdb5_util: Improper format of Kerbe ...

  4. ICEM-非结构化网格中创建无厚度的面

    原版视频下载地址:https://pan.baidu.com/s/1pLazbOf 密码: 4pii

  5. TCP连接关闭总结

    由于涉及面太广,只作简单整理,有兴趣的可参考<UNIX Networking Programming>volum 1, Section 5.7, 5.12, 5.14, 5.15, 6.6 ...

  6. Win10提示“无法打开此计算机上的组策略对象”如何解决

    为了更好地管理电脑,很多朋友都会去编辑Windows10的组策略.不过,有部分用户反馈自己在打开组策略的时候,遇到了“无法打开此计算机上的组策略对象”提示,无法打开组策略,这是怎么回事呢?下面,小编就 ...

  7. 网络公开课和MOOC资源

    美国(USA) 1. 麻省理工学院开放课程(Free Online Course Materials/ MIT OpenCourseWare) 2. 耶鲁大学开放课程(Online Video Lec ...

  8. sqlite3 线程模型

    官网:https://www.sqlite.org/c3ref/open.html 转载:https://blog.csdn.net/yifanernei/article/details/564212 ...

  9. spring cloud Eureka server 问题 Spring Cloud java.lang.TypeNotPresentException

    版本: spring-cloud.version : Greenwich.SR2 pom配置: <project xmlns="http://maven.apache.org/POM/ ...

  10. Python分词工具——jieba

    jieba简介 python在数据挖掘领域的使用越来越广泛.想要使用python做文本分析,分词是必不可少的一个环节在python的第三方包里,jieba应该算得上是分词领域的佼佼者. GitHub地 ...