JVM垃圾收集器

JVM垃圾收集器

JVM垃圾收集器分类

JVM垃圾收集器

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

Serial Collector (串行收集器)

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

ParNew Collector

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

Parallel Collector (Parallel Scavenge收集器)

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

Serial Old Collector

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

Parallel Old Collector

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

Concurrent Mark Sweep (CMS) Collector

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

Garbage-First (G1) Collector

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

Z Garbage Collector (ZGC)

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

Shenandoah Garbage Collector

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

JVM垃圾收集器

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

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

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...