JVM 垃圾回收器选择指南与性能测试

浅丽吖_4230

浅丽吖_4230

2026-07-09

980人浏览

原创

吞吐量优先应选parallel gc,因其专为最大化吞吐量设计,全程stw但效率高、无协调开销;g1gc仅在兼顾吞吐与软实时停顿(≤200ms)时才适用。

jvm 垃圾回收器选择指南与性能测试

选垃圾回收器不是挑参数,而是匹配业务真实需求——吞吐量、停顿时间、堆大小、CPU资源这四点定调,其余都是微调。

看业务类型:吞吐量优先还是延迟敏感?

这是最根本的判断起点。两类场景几乎不重叠:

  • 后台批处理类(日志分析、报表生成、ETL):允许秒级停顿,追求单位时间完成更多任务 → 优先考虑 Parallel GC 或 G1(开启吞吐量模式);
  • 在线交互类(API网关、支付接口、实时消息推送):用户感知明显,STW 超过 50ms 就可能触发重试或超时 → 必须倾向 CMS(JDK8/9)、G1(合理调参)、ZGC 或 Shenandoah。

看堆内存规模:小堆、中堆、大堆走不同路径

堆大小直接影响回收器可行性:

AVC.AI
AVC.AI

AVC.AI是一款提供图片和视频增强、修复、上色和抠图的在线 AI 工具平台。

下载
  • ≤ 2GB:Serial GC 完全够用,单线程无开销,启动快、内存占用极低;
  • 2GB–16GB:Parallel GC 和 G1 是主力。Parallel 更稳、更省资源;G1 更灵活,支持暂停时间目标(-XX:MaxGCPauseMillis=200),适合对停顿有明确约束的中型服务;
  • > 16GB(尤其 ≥ 32GB):CMS 已淘汰,ZGC 成首选——它在 64GB 堆下仍能稳定控制 STW 在 10ms 内;Shenandoah 次之;G1 在此规模下容易出现长暂停或 Mixed GC 波动。

看运行环境:CPU、OS 和 JDK 版本不能忽略

再好的回收器,跑在不匹配的环境里也白搭:

  • CPU 核心数少(≤ 4):并行类回收器(Parallel、G1)收益有限,反而可能因线程竞争拖慢;Serial 或 ZGC(并发线程可控)更合适;
  • 容器化部署(如 Docker):注意 JVM 无法自动识别 cgroup 限制(尤其 JDK8),需显式配置 -XX:+UseContainerSupport + -XX:InitialRAMPercentage 等参数,否则 G1/ZGC 可能误判可用内存;
  • JDK 版本决定选项上限:JDK 8 只能用 Serial/Parallel/CMS;JDK 11+ 才支持 ZGC(生产可用);JDK 17+ 推荐 ZGC 或 Shenandoah;JDK 21+ 默认 G1,但 ZGC 已全面成熟。

性能测试要测什么?别只看平均值

压测时盯紧三类指标,缺一不可:

  • STW 分布:不是平均暂停时间,而是 P90/P99/最大值 —— 一次 2s 的 Full GC 可能比十次 50ms 的 Minor GC 更致命;
  • GC 频率与回收效率:关注 gc.time 占比(吞吐量)和 gc.count(是否频繁触发);老年代持续增长却很少回收,说明晋升策略或回收器不匹配;
  • 应用侧影响:结合业务指标看——TPS 是否波动?错误率是否突增?下游超时是否关联 GC 时间戳?光看 GC 日志容易误判。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

80

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

80

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

60

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

60

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

280

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

160

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

140

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

80

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程