返回顶部
首页 > 资讯 > 精选 >JVM常见垃圾收集器有哪些
  • 829
分享到

JVM常见垃圾收集器有哪些

2023-07-02 12:07:40 829人浏览 薄情痞子
摘要

这篇文章主要介绍了JVM常见垃圾收集器有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JVM常见垃圾收集器有哪些文章都会有所收获,下面我们一起来看看吧。垃圾收集器类型垃圾收集器 是 垃圾收集算法 的具体实现

这篇文章主要介绍了JVM常见垃圾收集器有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JVM常见垃圾收集器有哪些文章都会有所收获,下面我们一起来看看吧。

垃圾收集器类型

  • 垃圾收集器 是 垃圾收集算法 的具体实现

  • 现在主流的垃圾收集器有 7 种:

JVM常见垃圾收集器有哪些

  • 我们会根据需求场景的不同,选择不同特点的垃圾收集器

下面我会详细介绍。

1. Serial收集器

1.1 定义

最基本、发展历史最长的垃圾收集器

1.2 优点

  • 并发收集 在进行垃圾收集时,必须暂停其他所有工作线程Stop The World),直到收集结束。

暂停工作线程 是在用户不可见的情况下进行

注:并发 与 并行的区别 a. 并发:在 某一时段内,交替执行多个任务(即先处理A再处理B,循环该过程) b. 并行:在 某一时刻内,同时执行多个任务(即同时处理A、B)

  • 单线程 只使用 一条线程 完成垃圾收集(GC线程)

  • 效率高 对于限定单CPU环境来说,Serial收集器没有线程交互开销(专一做垃圾收集),拥有更高的单线程收集效率。

垃圾收集高效,即其他工作线程停顿时间短(可控制在100ms内),只要垃圾收集发生的频率不高,完全可以接受。

1.3 使用的垃圾收集算法

复制 算法

1.4 应用场景

客户端模式下,虚拟机的 新生代区域

1.5 工作流程

JVM常见垃圾收集器有哪些

2. Serial Old收集器

2.1 定义

Serial收集器 应用在老年代区域 的版本

2.2 优点

并发、单线程、效率高

Serial收集器,此处不作过多描述

2.3 使用的垃圾收集算法

标记-整理 算法

2.4 应用场景

  • 在客户端模式下,虚拟机的老年代区域

  • 服务器模式下:

    Parallel Scavenge 收集器搭配使用

    作为CMS收集器的后备预案,在并发收集发生Concurrent Mode Failure时使用

2.5 工作流程

JVM常见垃圾收集器有哪些

3. ParNew 收集器

3.1 定义

Serial收集器 的 多线程 版本。

3.2 优点

  • 并发收集 在进行垃圾收集时,必须暂停其他所有工作线程(Stop The World),直到收集结束。

暂停工作线程 是在用户不可见的情况下进行

  • 多线程收集 使用 多条垃圾收集线程(GC线程) 完成垃圾收集

由于存在线程交互的开销,所以在单CPU环境下,性能差于 Serial收集器

  • CMS收集器配合工作 目前,只有ParNew 收集器能与 CMS收集器 配合工作

  • 由于CMS收集器使用广泛,所以该特点非常重要。

  • 关于CMS收集器 下面会详细说明

3.3 使用的垃圾收集算法

复制 算法

3.4 应用场景

服务器模式下,虚拟机的 新生代区域

多线程收集

3.5 工作流程

JVM常见垃圾收集器有哪些

4. Parallel Scavenge收集器

4.1 定义

ParNew 收集器的升级版

4.2 特点

  • 具备ParNew 收集器并发、多线程收集的特点

  • 以达到 可控制吞吐量 为目标 其他收集器的目标是: 尽可能缩短 垃圾收集时间,而Parallel Scavenge收集器的目标则是:达到 可控制吞吐量

  • 吞吐量:CPU用于运行用户代码的时间 与 CPU总消耗时间(运行用户代码时间+垃圾收集时间)的比值

  • 如:虚拟机总共运行100分钟,其中垃圾收集时间=1分钟、运行用户代码时间 = 99分钟,那吞吐量 = 99 / 100 = 99%

  • 自适应 该垃圾收集器能根据当前系统运行情况,动态调整自身参数,从而达到最大吞吐量的目标。

  • 该特性称为:GC 自适应的调节策略

  • 这是Parallel Scavenge收集器与 ParNew 收集器 最大的区别

4.3 使用的垃圾收集算法

复制 算法

4.4 应用场景

服务器模式下,虚拟机的 新生代区域

4.5 工作流程

JVM常见垃圾收集器有哪些

5. Parallel Old收集器

5.1 定义

Parallel Scavenge收集器 应用在老年代区域 的版本

5.2 特点

以达到 可控制吞吐量 为目标、自适应调节、多线程收集

Parallel Scavenge收集器

5.3 使用的垃圾收集算法

标记-整理 算法

5.4 应用场景

服务器模式下,虚拟机的 老年代区域

5.5 工作流程

JVM常见垃圾收集器有哪些

6. CMS收集器

6.1 定义

Concurrent Mark Sweep,基于 标记-清除算法的收集器

6.2 特点

6.2.1 优点
  • 并行 用户线程 & 垃圾收集线程同时进行。

即在进行垃圾收集时,用户还能工作。

  • 单线程收集 只使用 一条线程 完成垃圾收集(GC线程)

  • 垃圾收集停顿时间短 该收集器的目标是: 获取最短回收停顿时间 ,即希望 系统停顿的时间 最短,提高响应速度

6.2.2 缺点
  • 总吞吐量会降低 因为该收集器对CPU资源非常敏感,在并发阶段,虽不会导致用户线程停顿,但会因为占用部分线程(CPU资源)而导致应用程序变慢,总吞吐量会降低

  • 无法处理浮动垃圾 由于 并发清理时 用户线程还在运行,所以会有新的垃圾不断产生(即浮动垃圾),只能等到留待下一次GC时再清理掉。

  • 因为这一部分垃圾出现在标记过程之后,所以CMS无法在当次GC中处理掉它们

  • 因此,CMS无法等到老年代被填满再进行Full GC,CMS需要预留一部分空间。即所谓的:可能出现Concurrent Mode Failure失败而导致另一次Full GC产生。

  • 垃圾收集后会产生大量内存空间碎片 因为 CMS收集器是基于“标记-清除”算法的。

6.3 使用的垃圾收集算法

标记-清除 算法

6.4 应用场景

重视应用的响应速度、希望系统停顿时间最短的场景

互联网移动端应用

6.5 工作流程

  • CMS 收集器 是基于 标记-清除算法实现的收集器,工作流程较为复杂:(分为四个步骤)

    初始标记

    并发标记

    重新标记

    并发清除

JVM常见垃圾收集器有哪些

  • 下面用一张图详细说明工作流程:

JVM常见垃圾收集器有哪些

  • 由于整个过程中,耗时最长的并发标记 和 并发清除过程都可与用户线程一起进行

  • 所以,CMS收集器的垃圾收集过程可看作是与用户线程 并发执行的。

7. G1 收集器

7.1 定义

最新、技术最前沿的垃圾收集器

7.2 特点

  • 并行 用户线程 & 垃圾收集线程同时进行。

即在进行垃圾收集时,用户还能工作

  • 多线程 即使用 多条垃圾收集线程(GC线程) 进行垃圾收集

并发 & 并行 充分利用多CPU、多核环境下的硬件优势 来缩短 垃圾收集的停顿时间

  • 垃圾回收效率高 G1 收集器是 针对性 对 Java堆内存区域进行垃圾收集,而非每次都对整个 Java 堆内存区域进行垃圾收集。

  • G1收集器除了将 Java 堆内存区域分为新生代 & 老年代之外,还会细分为许多个大小相等的独立区域( Region),然后G1收集器会跟踪每个 Region里的垃圾价值大小,并在后台维护一个列表;每次回收时,会根据允许的垃圾收集时间 优先回收价值最大的Region,从而避免了对整个Java堆内存区域进行垃圾收集,从而提高效率。

  • 因为上述机制,G1收集器还能建立可预测的停顿时间模型:即让 使用者 明确指定一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得从超出N毫秒。即具备实时性

  • 分代收集 同时应用在 内存区域的新生代 & 老年代

  • 不会产生内存空间碎片

    从整体上看,G1 收集器是基于 标记-整理算法实现的收集器

    从局部上看,是基于 复制算法 实现 上述两种算法意味着 G1 收集器不会产生内存空间碎片。

7.3 使用的垃圾收集算法

  • 对于新生代:复制算法

  • 对于老年代:标记 - 整理算法

7.4 应用场景

服务器端虚拟机的内存区域(包括 新生代 & 老年代)

7.5 工作流程

  • G1 收集器的工作流程分为4个步骤:

    初始标记

    并发标记

    最终标记

    筛选回收

JVM常见垃圾收集器有哪些

  • 下面用一张图详细说明工作流程

JVM常见垃圾收集器有哪些

8. 总结

  • 本文对垃圾收集器的类型进行全面讲解

JVM常见垃圾收集器有哪些

关于“JVM常见垃圾收集器有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“JVM常见垃圾收集器有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: JVM常见垃圾收集器有哪些

本文链接: https://lsjlt.com/news/341843.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JVM常见垃圾收集器有哪些
    这篇文章主要介绍了JVM常见垃圾收集器有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JVM常见垃圾收集器有哪些文章都会有所收获,下面我们一起来看看吧。垃圾收集器类型垃圾收集器 是 垃圾收集算法 的具体实现...
    99+
    2023-07-02
  • JVM中常见的垃圾收集器有哪些
    这篇文章主要介绍了JVM中常见的垃圾收集器有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java...
    99+
    2023-06-02
  • JVM常见垃圾收集器学习指南
    目录前言垃圾收集器类型1. Serial收集器1.1 定义1.2 优点1.3 使用的垃圾收集算法1.4 应用场景1.5 工作流程2. Serial Old收集器2.1 定义2.2 优...
    99+
    2024-04-02
  • JVM垃圾回收——G1垃圾收集器
    目录 一、什么是G1垃圾收集器 二、G1垃圾收集器的内存划分 三、G1垃圾收集器的收集过程  四、G1收集器的优缺点 五、G1收集器的JVM参数配置 一、什么是G1垃圾收集器         Garbage First(简称G1)收集...
    99+
    2023-10-25
    jvm java G1
  • JVM垃圾回收器有哪些
    这篇文章主要介绍“JVM垃圾回收器有哪些”,在日常操作中,相信很多人在JVM垃圾回收器有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JVM垃圾回收器有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-05
  • 常见的垃圾回收器有哪些
    本篇文章给大家分享的是有关常见的垃圾回收器有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。作为一个 Java 开发,在面试的过程中垃圾回收...
    99+
    2024-04-02
  • jvm垃圾收集的基本原则有哪些
    JVM垃圾收集的基本原则有以下几个:1. 引用计数:每个对象都有一个与之关联的计数器,当对象被引用时,计数器加1;当对象的引用被释放...
    99+
    2023-09-25
    jvm
  • java性能优化常见的垃圾收集器有哪些
    本文小编为大家详细介绍“java性能优化常见的垃圾收集器有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“java性能优化常见的垃圾收集器有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。常见的垃圾回收器和...
    99+
    2023-07-02
  • 有哪些jvm垃圾回收算法
    这篇文章将为大家详细讲解有关有哪些jvm垃圾回收算法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。jvm垃圾回收算法:1、“标记–清除”算法;首先标记出所有需要被回收的对象,然后在标记完成后...
    99+
    2023-06-14
  • JVM常用垃圾收集器详细解说
    目录前言新生代垃圾收集器老年代垃圾收集器不分代垃圾收集器前言 在上一篇,我们谈到了jvm垃圾回收算法详细解析,并了解了JVM中针对堆区中不同的分代采用不同的垃圾回收算法 在了解了垃圾...
    99+
    2024-04-02
  • 浅谈JVM垃圾回收有哪些常用算法
    一、前言: 垃圾回收: 在未来的JDK中可能G1会为ZGC所取代 先问自己几个问题: 什么是垃圾? 垃圾就是堆内存中(范指)没有任何指针指向的对象实体。不具有可达性。 为...
    99+
    2024-04-02
  • jvm默认垃圾收集器是什么
    JVM(Java虚拟机)的默认垃圾收集器取决于所使用的Java版本和操作系统。在JDK 8及之前的版本中,默认的垃圾收集器是Para...
    99+
    2023-09-26
    jvm
  • JVM调优之垃圾定位、垃圾回收算法、垃圾处理器的区别有哪些
    本篇内容主要讲解“JVM调优之垃圾定位、垃圾回收算法、垃圾处理器的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JVM调优之垃圾定位、垃圾回收算法、垃...
    99+
    2024-04-02
  • Java垃圾回收器有哪些
    本篇内容主要讲解“Java垃圾回收器有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java垃圾回收器有哪些”吧!本文将会介绍各种不同类型的Java垃圾回收器。垃圾回收是Java用来将程序员...
    99+
    2023-06-17
  • JVM垃圾回收器详解
    这篇文章主要介绍“JVM垃圾回收器详解”,在日常操作中,相信很多人在JVM垃圾回收器详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JVM垃圾回收器详解”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!1 ...
    99+
    2023-06-02
  • java垃圾收集器有哪些及怎么使用
    这篇文章主要介绍“java垃圾收集器有哪些及怎么使用”,在日常操作中,相信很多人在java垃圾收集器有哪些及怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java垃圾收集器有哪些及怎么使用”的疑惑有所...
    99+
    2023-07-02
  • JVM垃圾回收器是什么
    这篇文章主要讲解了“JVM垃圾回收器是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM垃圾回收器是什么”吧!并发与并行并行(Parallel):并行描述的是多条垃圾收集器线程之间的关...
    99+
    2023-07-02
  • JVM知识总结之垃圾收集算法
    目录一、什么是垃圾1.1 引用计数算法1.1.1 优点1.1.2 缺点1.2 可达性分析算法1.2.1 优点 二、什么是引用2.1 JDK1.2以前2.2 JDK1.2之后...
    99+
    2024-04-02
  • 面试官常问的垃圾回收器有哪些
    这篇文章主要介绍“面试官常问的垃圾回收器有哪些”,在日常操作中,相信很多人在面试官常问的垃圾回收器有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”面试官常问的垃圾回收器有...
    99+
    2024-04-02
  • java性能优化四种常见垃圾收集器汇总
    目录前言常见的垃圾回收器和算法serial 串行垃圾收集器Parallel 多线程垃圾收集器CMS 收集器G1 收集器显式垃圾收集前言 本篇文章我们来具体看看如何选择合适的垃圾收集器...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作