首页 > Java > Java面试题 > 正文

说一下 jvm 有哪些垃圾回收器?

煙雲
发布: 2025-11-15 12:38:03
原创
723人浏览过
JVM垃圾回收器包括Serial、ParNew、Parallel Scavenge等新生代收集器,Serial Old、Parallel Old、CMS等老年代收集器,以及G1、ZGC、Shenandoah等整堆收集器,适用于不同场景;其中G1和ZGC因兼顾低延迟与高吞吐量,成为现代应用主流选择。

说一下 jvm 有哪些垃圾回收器?

JVM 的垃圾回收器种类多样,主要为了适应不同应用场景的需求,比如追求高吞吐量、低延迟或大内存管理。以下是目前主流和常见的 JVM 垃圾回收器:

新生代收集器

这类收集器专门负责回收新生代(Young Generation)的内存。

  • Serial 收集器:最基本的单线程收集器,使用“复制算法”。在进行垃圾回收时会暂停所有用户线程(Stop-The-World)。简单高效,适合客户端应用或单核 CPU 环境。
  • ParNew 收集器:Serial 收集器的多线程版本,同样使用“复制算法”。除了可以并行执行,其他特性与 Serial 类似。常与 CMS 老年代收集器配合使用。
  • Parallel Scavenge 收集器:一个注重吞吐量的并行收集器,也采用“复制算法”。它允许用户精确控制吞吐量和最大停顿时间,适合后台计算等对响应时间不敏感但要求高效率的场景。

老年代收集器

这些收集器用于回收老年代(Old Generation)的内存。

有道小P
有道小P

有道小P,新一代AI全科学习助手,在学习中遇到任何问题都可以问我。

有道小P 64
查看详情 有道小P
  • Serial Old 收集器:Serial 收集器的老年代版本,使用“标记-整理算法”,也是单线程的。主要用于客户端模式或作为 CMS 收集器的后备方案。
  • Parallel Old 收集器:Parallel Scavenge 的老年代搭档,使用“标记-整理算法”实现并行回收,主打高吞吐量。
  • CMS (Concurrent Mark Sweep) 收集器:以获取最短停顿时间为目标的并发收集器,使用“标记-清除算法”。它可以与用户线程并发执行大部分工作,减少停顿。但它会产生内存碎片,且对 CPU 资源敏感。注意:CMS 在 JDK 14 中已被移除。

整堆收集器

这类收集器不再严格区分新生代和老年代,而是将整个堆作为整体来管理。

  • G1 (Garbage First) 收集器:面向服务端应用的收集器,适用于大内存、多核 CPU 的机器。它将堆划分为多个 Region,优先回收垃圾最多的区域,兼顾了高吞吐量和低停顿时间。从 JDK 9 开始成为默认收集器,是目前互联网项目的主流选择。
  • ZGC (Z Garbage Collector):一款以极低延迟为目标的收集器,目标是将停顿时间控制在 10 毫秒以内,甚至更短。它能处理非常大的堆(TB 级),适合对响应时间有严苛要求的应用。
  • Shenandoah 收集器:与 ZGC 目标类似,专注于降低 GC 停顿时间,通过更激进的并发处理实现快速回收。
基本上就这些。选择哪种收集器取决于你的应用需求、硬件配置和使用的 JDK 版本。现代应用普遍推荐使用 G1 或 ZGC。

以上就是说一下 jvm 有哪些垃圾回收器?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号