当前位置: 首页 > article >正文

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

JVM 垃圾回收器对比表

垃圾回收器类型工作方式回收方式停顿时间适用场景优点缺点常见问题常见配置
Serial GC串行单线程,STW年轻代:复制算法
老年代:标记-整理
小内存、单核CPU,如桌面应用或嵌入式设备简单高效,适用于单核和小内存环境STW 时间长,不适用于多线程、高并发环境长时间停顿影响用户体验-XX:+UseSerialGC
Parallel GC并行多线程,STW年轻代:复制算法
老年代:标记-整理
中等高吞吐量场景,如批量计算、大数据处理适用于多核 CPU,吞吐量高,自动调优STW 时间不可预测,容易造成短时性能抖动长时间 Full GC 导致系统暂停-XX:+UseParallelGC(年轻代并行)
-XX:+UseParallelOldGC(老年代并行)
CMS GC并发多线程,部分 STW标记-清除,并发标记、并发清除短(部分长停顿)低延迟场景,如在线系统、Web 服务器低停顿时间,可并发清理,适用于交互式应用易产生碎片,导致 Full GC,容易造成“浮动垃圾”问题碎片化严重,需要频繁 Full GC-XX:+UseConcMarkSweepGC
G1 GC并发并行逻辑分区回收,Region 机制标记-整理 + 复制,Mixed GC 结合年轻代和老年代可调大内存、低停顿场景,如大型 Web 服务器停顿可预测,回收均衡,减少碎片配置复杂,Full GC 开销大,调优较难Full GC 触发后暂停时间较长-XX:+UseG1GC
ZGC并发并行读屏障、并发回收并发标记-复制极短(<1ms)超大内存、低延迟,如云计算、金融交易系统STW 低于 1ms,可扩展至 16TB 内存内存占用大,支持的 JDK 版本有限,调优难度大内存占用过大时可能影响吞吐量-XX:+UseZGC
-XX:ZUncommitDelay=300(内存回收优化)
Shenandoah GC并发并行并发标记、并发清理标记-清除 + 复制极短超大内存、低延迟,如电商、游戏服务器低延迟(<10ms),并发回收,适用于交互式应用小内存环境下表现不如 CMS/G1,CPU 占用较高高 CPU 使用率,影响吞吐量-XX:+UseShenandoahGC

补充说明

  1. STW(Stop The World):指垃圾回收期间所有应用线程必须暂停,影响系统响应时间。
  2. 吞吐量(Throughput):衡量 GC 回收效率,吞吐量高的 GC 适用于计算密集型任务,但可能会有较长的 STW 停顿。
  3. 低延迟(Low Latency):适用于需要极短暂停时间的应用,如金融、云计算、实时系统。
  4. G1/ZGC/Shenandoah 适用于大内存环境,尤其是 ZGC 可支持 16TB 内存,G1 可平衡吞吐与停顿。
  • 停顿时间:指的是垃圾回收暂停应用程序的时间。较长意味着回收期间会发生较长时间的“Stop The World”事件。
  • 适用场景:指各个回收器的典型应用环境,如服务器应用、多核CPU或客户端应用等。
  • 优点:列出了每个回收器在特定场景下的优势。
  • 缺点:列出了每个回收器可能面临的挑战或局限。

这个表格简要地比较了常见的垃圾回收器,帮助你选择合适的垃圾回收器时参考。


http://www.kler.cn/a/542085.html

相关文章:

  • aspectFill(填充目标区域的同时保持图像的原有宽高比 (aspect ratio)图像不会被拉伸或压缩变形
  • SQL Server 逻辑查询处理阶段及其处理顺序
  • 【deepseek-r1本地部署】
  • IDEA查看项目依赖包及其版本
  • 理邦仪器嵌入式(C/C++开发)开发面试题及参考答案
  • 信创领域的PostgreSQL管理员认证
  • 在mac中安装Colima使用docker(替代Docker Desktop)
  • Vue 3 嵌套请求与数据重组:挑战与应对
  • ArcGIS Pro SDK (二十七)自定义许可
  • Go语言的内存分配原理
  • 泛型 什么是泛型 泛型的继承和通配符 二叉树
  • hbase快照同步到目标集群出现ERROR Multiple regions have the same startkey问题分析
  • OpenHarmony应用开发学习路线与资源指南
  • 请解释 JavaScript 中的函数式编程,优缺点是什么?
  • 三步本地部署deepseekr1,支持macOs,ubuntu,Windows
  • 基于STM32单片机智能教室管理系统设计与实现
  • 怎么在win10系统批量生成下面目录示例文件?
  • Softhsm储存安全数据性能整理
  • SQLMesh系列教程-2:SQLMesh入门项目实战(下篇)
  • TCP基础知识
  • 【网络安全】服务器安装Docker及拉取镜像教程
  • 【AI时代】Page Assist - 本地 AI 模型的 Web UI (谷歌浏览器) 本地DeepSeek启用联网功能
  • JavaScript 入门指南:从零开始学前端开发
  • linux基于 openEuler 构建 LVS-DR 群集--一、用命令行完成 二、使用脚本完成
  • Batch Normalization (BN) 和 Synchronized Batch Normalization (SyncBN) 的区别
  • DeepSeek-V3与DeepSeek-R1的对比