JVM垃圾收集器

JVM垃圾收集器

JVM垃圾收集器分类

image.png

JVM(Java虚拟机)提供了多种垃圾收集器,这些收集器随着JDK版本的更新也在不断迭代和发展。以下是一些常见的JVM垃圾收集器及其特点:

  1. Serial Collector (串行收集器)

    • 新生代收集器,采用复制算法
    • 单线程收集器,垃圾收集期间会暂停所有应用线程(Stop-The-World)。
    • 适用于客户端应用或单个CPU环境,对响应时间要求不是特别高且系统资源有限的场景。
  2. ParNew Collector

    • 新生代收集器,是Serial Collector的多线程版本
    • 虽然提高了收集效率,但由于仍然是Stop-The-World类型,可能会增加总体的暂停时间。
    • 主要与CMS收集器配合使用,在多核机器上有更好的表现。
  3. Parallel Collector (Parallel Scavenge收集器)

    • 新生代收集器,同样使用复制算法,并行执行垃圾收集,多线程
    • 优化目标是达到高吞吐量(即总的工作负载/(工作负载+垃圾收集时间)),适合后台运算或批处理任务等强调高效率的应用。
  4. Serial Old Collector

    • 老年代收集器,基于标记-整理(Mark-Compact)算法。
    • 单线程收集,通常作为Client模式下的默认老年代收集器。
    • 当JVM与Parallel Scavenge收集器配合使用时,或者作为CMS收集器失败时的备用方案。
  5. Parallel Old Collector

    • 老年代收集器,是Parallel Scavenge收集器的老年代版本。
    • 使用多线程并行执行标记-整理算法。
    • 配合Parallel Scavenge使用时,可以构成一个关注高吞吐量的完整收集器策略。
  6. Concurrent Mark Sweep (CMS) Collector

    • 老年代收集器,基于标记-清除算法并尝试减少Stop-The-World的时间。
    • 并发收集设计,分为多个阶段,大部分阶段可以和应用线程并发执行。
    • 主要目标是在低延迟应用中尽量减少垃圾收集带来的停顿时间。
  7. Garbage-First (G1) Collector

    • 全面的垃圾收集器,适用于大内存服务器环境,替代了CMS。
    • 把整个堆划分为多个大小相等的Region,并采用部分并发的标记-整理算法
    • 目标是可预测的停顿时间和避免全堆扫描,尤其适用于多核硬件和大型堆配置。
  8. Z Garbage Collector (ZGC)

    • 自JDK 11开始引入,目标是将最大暂停时间限制在10毫秒以内,支持TB级堆内存,并采用了一系列先进算法和技术。
  9. Shenandoah Garbage Collector

    • 也是一个专注于减少停顿时间的收集器,从JDK 12开始作为实验特性引入,并在后续版本中逐渐稳定,使用并发的标记-压缩算法。

image.png

请注意,随着JDK版本的演进,一些早期的收集器可能已经过时或被替换。例如,在较新版本的JDK(比如JDK 11及以后)中,Z Garbage Collector(ZGC)和Shenandoah GC也被引入,它们进一步提升了垃圾收集性能,尤其是针对超大堆和低延迟需求的应用场景。

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

posted @   汉源魂  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示