有了虚拟机,就一定需要收集垃圾的机制,这就是Garbage Collection ,对应的产品我们称为 Garbage Collector 。

  1. 1999年,随JDK 1.3.1 一起来的是串行方式的 Serial GC ,它是第一款GC。ParNew GC 是 Serial GC的多线程版本。
  2. 2002年2月26日,Parallel GC 和 Concurrent Mark Sweep GC( 即 CMS ) 跟随JDK1.4.2 一起发布。 Parallel GC 在 JDK6 之后成为 Hotspot 默认GC。
  3. 2012年,在 JDK1.7u4 中,G1 可用。
  4. 2017年,JDK9 中 G1 成为默认垃圾收集器,以替代 CMS。
  5. 2018年3月,JDK10 中 G1的并行完整垃圾回收,实现并行性能改善最坏情况的延迟。
  6. 2018年9月,JDK11 发布。引入 Epsilon GC,又称为“No-Op(无操作)” 回收器;同时引入 ZGC: 可伸缩的低延迟回收器(Experimental)。
  7. 2019年3月,JDK12发布。增加 G1,自动返回未使用堆内存给操作系统; 同时,引入Shenandoah GC:低停顿时间的GC(Experimental)。
  8. 2019年9月,JDK13 发布。增强 ZGC,自动返回未使用堆内存给操作系统。
  9. 2020年3月,JDK14 发布。删除 CMS。扩展 ZGC 在 mac 和 windows 的应用。
  • 7款 经典 的垃圾回收器(不包含新发行的GC)

串行回收器: Serial 、Serial Old
并行回收器: ParNew、Parallel Scavenge、 Parallel Old
并发回收器: CMS、 G1

回收算法

文章转自

jvm垃圾收集器的发展史及回收算法相关推荐

  1. 直通BAT必考题系列:7种JVM垃圾收集器特点,优劣势、及使用场景

    直通BAT之JVM系列 直通BAT必考题系列:JVM的4种垃圾回收算法.垃圾回收机制与总结 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置 今天继续JVM的垃圾回收器详解,如果说垃圾 ...

  2. JVM:垃圾收集器与内存分配策略

    垃圾收集器与内存分配策略 1.对象已死吗 1).引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就 ...

  3. JVM垃圾收集器(三)

    JVM垃圾收集器(三) 垃圾回收(GC)线程与应用线程保持相对独立,当系统需要执行垃圾回收任务时,先停止工作线程,然后命令GC线程工作,以串行模式工作的收集器,称为Serial Collector,即 ...

  4. [JVM] 垃圾收集器与内存分配策略

    目录 简介 哪些内存需要回收 引用计数算法 可达性分析 再次谈引用 生存和死亡 简介 GC(Carbage Coolection),需要完成的3件事情 : 哪些内存需要回收 什么时候回收 如何回收 程 ...

  5. 面试题:JVM垃圾收集器

    GC的性能指标 吞吐量:运行用户代码的时间占总运行时间的比例. 暂停时间:执行垃圾收集时,程序工作线程被暂停的时间. 内存占用:Java堆区所占的内存大小. 高吞吐量较好因为这会让应用程序的用户感觉应 ...

  6. 7种 JVM 垃圾收集器特点、优劣势及使用场景(多图)

    点击上方"IT牧场",选择"设为星标"技术干货每日送达! 一.常见垃圾收集器 现在常见的垃圾收集器有如下几种: 新生代收集器: Serial ParNew Pa ...

  7. JVM——垃圾收集器

    垃圾收集器与内存分配策略 一.概述 垃圾收集(Garbage Collection,简称GC),这项技术并不是Java语言的伴生产物,早在java语言出来之前,就已经有语言开始使用动态分配内存和垃圾回 ...

  8. 详述JVM垃圾收集器(二)常见的垃圾收集器

    一.Serial GC与Serial Old GC收集器 Serial收集器   Serial垃圾收集器可以说是最基础的.历史最悠久的垃圾收集器.在JDK1.3.1之前可以说是虚拟机新生代唯一的选择. ...

  9. JVM垃圾收集器与内存分配策略学习总结

    方法区: 1.线程共享 2.储存类信息,常量,静态变量,编译器编译后的代码 3.非堆(别名)用于区分Java堆 4.不需要连续的内存 5.可以固定或可扩张 6.选择不实现垃圾回收//这个区域很少进行垃 ...

最新文章

  1. 学习网页制作中如何在正确选取和使用 CSS 单位
  2. MAP Protocol 协议(2)介绍二
  3. unity脚本运行顺序具体的解释
  4. 【python】openstack管理小工具(增删查改,批量ping)
  5. python编程入门到实践笔记习题_Python编程从入门到实践笔记——列表简介
  6. Direct2D (13) : 画刷之 ID2D1BitmapBrush
  7. C#中判断字符串相等的方法
  8. 微课|玩转Python轻松过二级(1.5节):安装扩展库
  9. python PHP 多进程,python多进程的用法示例(代码)
  10. 【报告分享】2021全球职场调研中国报告:期待与忐忑,职场人的心声-普华永道.pdf(附下载链接)...
  11. Java ADF Template程序不能连接ArcGIS Server问题
  12. Zookeeper的Quorum机制-谈谈怎样解决脑裂(split-brain)
  13. 【转】mac/linux终端光标的快捷键操作
  14. (ZT)算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
  15. 如何在Win10上配置JDK1.8
  16. NYOJ 3(多边形重心)
  17. 趣学Python-教孩子学编程--第三章
  18. 直播间搭建实现iOS直播聊天消息界面
  19. 数据库中查询经纬度距离远近
  20. RANSAC算法(仅供学习使用)

热门文章

  1. 【转】ssh服务器启动和客户端常用操作
  2. 设计模式——策略模式(C++实现)
  3. Delphi的StringReplace[转]
  4. 工预-Navicat for MYSQL
  5. TensorFlow版本
  6. 吴恩达 coursera ML 第十三课总结+作业答案
  7. Python学习笔记:常用内建模块2:collections
  8. linux查看服务器网络状态
  9. CentOS下双网卡单网关路由配置
  10. GPU 编程入门到精通(一)之 CUDA 环境安装