JVM所有的垃圾回收器已整理完毕,请笑纳!

来自版块: 开发
57
0

Java 垃圾回收器(Garbage Collector,GC)是Java虚拟机(JVM)中的一个重要组件,无论是日常开发,还是技术面试中,它都是一个非常重要的知识点。那么,如何才能系统性地学习 JVM垃圾回收器的相关知识呢?这篇文章 ...

Java 垃圾回收器(Garbage Collector,GC)是Java虚拟机(JVM)中的一个重要组件,无论是日常开发,还是技术面试中,它都是一个非常重要的知识点。

那么,如何才能系统性地学习 JVM垃圾回收器的相关知识呢?这篇文章,我们整理了过往所有关于 JVM回收器的文章,希望可以帮到你。

首先,让我们从全局来了解下 JVM垃圾回收器的类型以及它们的特点,优缺点和适用场景:

1. Serial Garbage Collector

  • 特点: 使用单线程进行垃圾回收。
  • 适用场景: 适用于单处理器机器或小型应用程序。
  • 优点: 实现简单,开销低。
  • 缺点: 会导致较长的暂停时间,影响应用程序性能。

2. Parallel Garbage Collector

  • 特点: 使用多线程进行垃圾回收。
  • 适用场景: 适用于多处理器机器和需要高吞吐量的应用程序。
  • 优点: 提高了垃圾回收的效率,减少了暂停时间。
  • 缺点: 在垃圾回收期间,应用程序仍然会暂停。

3. CMS (Concurrent Mark-Sweep) Garbage Collector

  • 特点: 主要目标是减少暂停时间,适用于需要低延迟的应用。
  • 适用场景: 适用于对响应时间要求较高的应用程序。
  • 优点: 大部分垃圾回收工作在与应用程序并发进行,减少了暂停时间。
  • 缺点: 可能会产生内存碎片,需要更多的CPU资源。

4. G1 (Garbage-First) Garbage Collector

  • 特点: 设计用于处理大堆内存,提供可预测的暂停时间。
  • 适用场景: 适用于大内存和需要可预测暂停时间的应用程序。
  • 优点: 分区回收内存,减少了长时间的暂停,适合大堆内存。
  • 缺点: 相比其他垃圾回收器,调优复杂度较高。

5. ZGC (Z Garbage Collector)

  • 特点: 设计目标是处理大堆内存,且暂停时间非常短(通常低于10毫秒)。
  • 适用场景: 适用于超大内存应用和对暂停时间极为敏感的应用。
  • 优点: 极低的暂停时间,可处理TB级别的堆内存。
  • 缺点: 目前还在不断发展和优化中,可能不如其他垃圾回收器稳定。

6. Shenandoah Garbage Collector

  • 特点: 类似于ZGC,目标是提供低暂停时间。
  • 适用场景: 适用于低延迟和大堆内存的应用。
  • 优点: 低暂停时间,适合大内存应用。
  • 缺点: 需要更多的CPU资源,复杂度较高。

所有 JVM垃圾回收器对比如下图:

最后,虽然 JVM垃圾回收器的知识很重要,但是它真的有点难,而且在日常开发中,很多小伙伴常年奋斗在CRUD业务上,很少和JVM直接打交道,因此,理解和掌握回收器的原理需要一个过程。





文章来源:猿java
原文链接:https://www.51cto.com/article/797418.html
已注明著作权归属所有及作者,非用于商业用途。文章
素材均来自网络,如有侵权请告知删除。



鲜花

握手

雷人

路过

鸡蛋
2024-9-21 16:22

热文

  • 3 天
  • 7天
返回顶部