1、Serial Old 收集器(-XX: +UseSerialOldGC, 标记-整理算法)

  • 单线程收集,进行垃圾收集时,必须暂停所有工作线程
  • 简单高效,Client模式下默认的老年代收集器

2、Parallel Od收集器(-XX: +UseParallelOldGC  ,标记-整理)

  • JDK6 之后才有这个收集器,多线程,吞吐量优先,如果注重CPU资源和吞吐量的场合,可以使用这个组合 Parallel Scavenge + Parallel Old 收集器

 

3、CMS收集器(这个收集器,占据了老年代收集器的半壁江山。-XX:+ UseConcMarkSweepGC ,标记-清除算法,有碎片产生)

  优点:几乎可以和用户线程做到同时工作,本质还是要STOP-THE WORLD,只是停顿时间短

  如果在老年代中存活更多存活率高的对象,使用CMD收集器更适合。

  收集流程:(一边掉垃圾一边打扫)

  初始标记:stop-the-world,从垃圾回收的根对象开始,只是扫描和根对象有关联的对象并做标记。虽然暂停了所有的线程工作,但是停顿时间很短。

  并发标记:并发追随标记,程序不会停顿

  并发预清理:查找执行并发标记阶段从年轻代晋升到老年代的对象

  重新标记:暂停虚拟机,扫描CMS堆中的剩余对象

  并发清理:清理垃圾对象,程序不会停顿

  并发重置:重置CMS收集器的数据结构

4、G1收集器(-XX:+UseG1GC , 复制+标记-整理算法)

Garbage First 收集器的特点

  • 并发和并行
  • 分代收集
  • 空间整合
  • 可预测的停顿

说明:这个收集器的内存布局与其他收集器有很大区别,将整个JAVA堆内存划分成多个大小相等的Region,年轻代和老年代不再物理隔离

5、额外知识:JDK11 有 Epsilon GC 和 ZGC (研发阶段) 

6、问题:为什么年轻代中的Parallel Scavenge收集器不能和老年代中的CMS收集器一起工作呢?

答:因为Parallel Scavenge收集器(G1)都没有使用传统的GC收集器代码框架,都是另外独立开发的。

而Serial,parNew,CMS都有使用了部分相同的收集器代码框架,所有他们三个是兼容的。

(CMS是hotsport在jdk5才出来的真正意义上是并行收集器,第一次让垃圾收集线程和用户线程一起工作。)

Java垃圾回收之老年代垃圾收集器相关推荐

  1. java 老年代回收_Java垃圾回收之老年代垃圾收集器

    1.Serial Old 收集器(-XX: +UseSerialOldGC, 标记-整理算法) 1.1 单线程收集,进行垃圾收集时,必须暂停所有工作线程 1.2 简单高效,Client模式下默认的老年 ...

  2. [JVM-3]Java垃圾回收(GC)机制和垃圾收集器选择

    哪些内存需要回收? 1.引用计数法 这个算法的实现是,给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1:当引用失效时,计数器值-1.任何时刻计数值为0的对象就是不可能再被使用的.这 ...

  3. java垃圾回收到老年代次数,Java垃圾回收之回收算法

    问题:谈谈你了解的垃圾回收算法 1.标记-清除算法(Mark and Sweep) 标记:从跟集合进行扫描,对存活的对象进行标记 清除:对堆内存从头到尾进行线性遍历,回收不可达对象内存 优点:简单 缺 ...

  4. JVM老年代垃圾收集器Serial Old和Parallel Old

    Serial Old垃圾收集器 老年代垃圾收集器,与Serial一样,是一个单线程垃圾收集器,不同的是用的算法不一样(标记-整理) 根据老年代的特点,有人设计了标记-整理(Mark Compact)算 ...

  5. 五、jvm垃圾回收3(几种垃圾收集器)

    根据<深入理解java虚拟机>这本书总结 前面说到了垃圾标记方法.垃圾收集算法.这篇主要总结一下垃圾收集的具体实现:垃圾收集器 一.七种常见的垃圾收集器: 根据所在老年代还是年轻代列出: ...

  6. Java垃圾回收器(一)新生代垃圾收集器

    一.概述 新生代与老年代进行垃圾回收时,会使用不同的垃圾回收期.这里举出常用的垃圾回收器.如图: 基本概念与关键点 1:常见的垃圾 回收器有上面七种 Serial.ParNew.ParallerSca ...

  7. 深入理解Java垃圾回收——垃圾收集器

    <深入理解Java垃圾回收--虚拟机高效回收的背后>讲述了垃圾回收的理论思想,本篇文章来深入了解垃圾回收的实践:垃圾收集器. 在讲解垃圾收集器之前必要要统一几点认知: 1.用户线程:执行应 ...

  8. java垃圾回收机制_笔记 | Java垃圾回收机制

    本文经授权转载自程序员杂货铺(ID:speakFramework) 垃圾回收 最近上海的小伙伴是不是要被强垃圾分类搞疯了???哈哈哈哈 上海是个走在前列的城市啊,不光骑自行车闯红灯要被罚钱,垃圾不分类 ...

  9. 细说Java垃圾回收

    目录 前言 什么是垃圾回收? 手动回收垃圾时代 虚拟机接管时代 哪些区域需要垃圾回收? 怎么定义垃圾? 引用计数法 可达性分析算法 哪些些对象可以作为GC Root? 虚拟机栈(栈帧中的局部变量表)中 ...

最新文章

  1. 芝大教授: 博士培养正沦为“庞氏骗局”
  2. linux xfs文件误删除恢复_linux系统文件误删除恢复
  3. 【Python】部分基础+Flask/JSON/....+零碎笔记
  4. android studio云测,Android studio 下的robotium自动化测试和持续集成
  5. 那个linux系统自带应用商店,如何在荣耀笔记本(Linux版)中拥有deepin应用商店?...
  6. oracle中变量前加冒号_oracle变量的定义和使用【转】
  7. [python]Python概述
  8. java web 车辆管理系统_javaweb车辆信息管理系统
  9. 将一个大写英文字母转换为小写输出 (12 分) - PTA
  10. 自建CA然后颁发证书给搭建的httpd用
  11. python tkinter 自主小项目——计算器往事
  12. oracle能用hql吗,使用HQL查询日期,Oracle报“Invalid number”
  13. 几种数据规整的方法总结
  14. win7系统安装信息服务器不可用怎么办,Win7系统RPC服务器不可用怎么办?
  15. cookie 有效域名如何设置??
  16. 云呐|动力环境监控系统,机房环境及动力设备监控系统
  17. PDF 阅读与注释的实践——知之阅读、Markdown+Git、Kami、Edge、Mendeley、Zotero
  18. 少不读水浒——揭秘水浒传
  19. iOS GIF 格式动画 图片显示
  20. Cygwin踩坑记录(五)- 下载sdkman提示OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to sdkman:443

热门文章

  1. 解决git本地提交不到远程库
  2. java日期转化工具类
  3. https://blog.csdn.net/blmoistawinde/article/details/84329103
  4. npm install遇到ENOENT: no such file or directory, rename错误
  5. 基于TensorRT优化的Machine Translation
  6. ARM Cortex-M嵌入式C基础编程(下)
  7. 2021年大数据Spark(三十七):SparkStreaming实战案例二 UpdateStateByKey
  8. 【CV】吴恩达机器学习课程笔记第10章
  9. Python的输出:Python2.7和Python3.7的区别
  10. Java 反射 (快速了解反射)