不同的垃圾回收器概述

一 点睛

垃圾收集机制是 Java 的招牌能力,极大地提高了开发效率。这当然也是面试的热点。

那么,Java常见的垃圾收集器有哪些?

GC 垃圾收集器是和 JVM 一脉相承的,它是和 JVM 进行搭配使用,在不同的使用场景对应的收集器也是有区别。

二 垃圾回收器发展史

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

  • 1999年随 JDK1.3.1 一起来的是串行方式的 serial GC,它是第一款 GC。ParNew 垃圾收集器是 Serial 收集器的多线程版本。

  • 2002年2月26日,Parallel GC 和 Concurrent Mark Sweep GC 跟随 JDK1.4.2 一起发布。

  • Parallel GC 在 JDK6 之后成为 HotSpot 默认 GC。

  • 2012年,在 JDK1.7u4 版本中,G1 可用。

  • 2017年,JDK9 中 G1 变成默认的垃圾收集器,以替代 CMS。

  • 2018年3月,JDK10 中 G1垃圾回收器的并行完整垃圾回收,实现并行性来改善最坏情况下的延迟。

  • 2018年9月,JDK11发布。引入 Epsilon 垃圾回收器,又被称为 "No-Op(无操作)" 回收器。同时,引入 ZGC:可伸缩的低延迟垃圾回收器(Experimental)。

  • 2019年3月,JDK12发布。增强 G1,自动返回未用堆内存给操作系统。同时,引入 Shenandoah GC:低停顿时间的GC(Experimental)。

  • 2019年9月,JDK13发布。增强 ZGC,自动返回未用堆内存给操作系统。

  • 2020年3月,JDK14发布。删除 CMS 垃圾回收器。扩展 ZGC 在 Macos 和 Windows 上的应用。

三 7种经典的垃圾收集器

串行回收器:Serial、Serial old

并行回收器:ParNew、Parallel Scavenge、Parallel old

并发回收器:CMS、G11

四 7款经典收集器与垃圾分代之间的关系

  • 新生代收集器:Serial、ParNew、Parallel Scavenge

  • 老年代收集器:Serial old、Parallel old、CMS

  • 整堆收集器:G1

五 垃圾收集器的组合关系

  • 两个收集器间有连线,表明它们可以搭配使用(7中搭配):Serial/Serial old、Serial/CMS、ParNew/Serial old、ParNew/CMS、Parallel Scavenge/Serial 0ld、Parallel Scavenge/Parallel 01d、G1;

  • 其中 Serial old 作为 CMS出现 "Concurrent Mode Failure" 失败的后备预案。

  • 红色虚线:由于维护和兼容性测试的成本,在 JDK 8 时将 Serial + CMS、ParNew + Serial old 这两个组合声明为废弃(JEP173),并在 JDK9 中完全取消了这些组合的支持(JEP214),即:移除。

  • 绿色虚线:JDK14 中:弃用 Parallel Scavenge 和 Serialold GC 组合(JEP366)。

  • 青色虚线:JDK14 中:删除 CMS 垃圾回收器(JEP363)。

为什么要有如此之多的收集器,一个不够吗?因为 Java 的使用场景很多,移动端,服务器等。所以就需要针对不同的场景,提供不同的垃圾收集器,提高垃圾收集的性能。

对各个收集器进行比较,并没有一种放之四海皆准、任何场景下都适用的完美收集器存在,更加没有万能的收集器。所以我们选择的只是对具体应用最合适的收集器。

六 如何查看默认垃圾收集器

-XX:+PrintcommandLineFlags:查看命令行相关参数(包含使用的垃圾收集器)

使用命令行指令:jinfo -flag  相关垃圾回收器参数  进程ID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值