JVM 调优中的 JVM 参数详解

酷辰大大_3844

酷辰大大_3844

2026-07-09

389人浏览

原创

jvm调优核心是精准配置内存、垃圾回收与诊断参数以匹配业务负载:堆内存需-xms=-xmx避免动态调整,-xmn设为1/3~1/2堆大小;元空间必须设-xx:maxmetaspacesize防oom;小堆用parallelgc,中大堆选g1gc,超大堆或低延迟场景用zgc;辅以gc日志与堆转储等诊断参数。

jvm 调优中的 jvm 参数详解

JVM 调优的核心就是合理配置参数,让内存分配、垃圾回收和运行时行为匹配实际业务负载。关键不在于堆砌所有参数,而在于抓住几类真正影响稳定性和性能的主干配置。

Gen-2
Gen-2

Gen-2是一款AI视频创作工具,Runway最新推出的AI视频生成模型。

下载

堆内存参数:最基础也最关键的配置

堆是对象存活的主要区域,参数设不合理会直接引发 OOM 或频繁 GC。 - -Xms 和 -Xmx 必须设为相同值(例如 -Xms4g -Xmx4g),避免运行中动态扩容缩容带来的 STW 开销和性能抖动。 - -Xmn 控制新生代大小,建议设为堆总大小的 1/3 到 1/2;过大导致老年代压缩、Full GC 增多,过小则对象快速晋升、加剧老年代压力。 - -XX:SurvivorRatio=8 是默认值,表示 Eden : S0 : S1 = 8 : 1 : 1;若 Survivor 区常被填满、对象提前进入老年代,可适当调大该比值(如 12),给对象更多“存活观察期”。 - -XX:MaxTenuringThreshold 默认 15,多数短生命周期对象在 Minor GC 中就被回收,无需修改;仅当发现大量对象在年轻代反复拷贝后才晋升,可结合 GC 日志分析是否需调低。

元空间参数:避免类加载引发的 OOM

JDK 8+ 已废弃永久代,改用本地内存的元空间(Metaspace)。 - -XX:MetaspaceSize=128m 是触发首次元空间 GC 的阈值,设太低(如默认 21MB)会导致应用启动初期频繁卸载类;设太高则延迟 GC,可能撑爆本地内存。 - -XX:MaxMetaspaceSize=512m 必须显式设置上限,否则元空间无限制增长,最终耗尽系统内存;Spring Boot 等大量反射和动态代理的应用,建议从 256m 起步,根据实际类数量逐步上调。 - 不推荐依赖 -XX:MinMetaspaceFreeRatio 和 -XX:MaxMetaspaceFreeRatio 自动扩缩,它们在高动态类加载场景下响应滞后,不如固定上限 + 监控告警更可控。

垃圾回收器选择:按堆大小与延迟要求匹配

GC 器不是越新越好,而是看业务特征是否契合。 - 小堆(≤ 4GB)、吞吐优先:用 -XX:+UseParallelGC,适合批处理、后台任务。 - 中大堆(4–32GB)、兼顾吞吐与停顿:-XX:+UseG1GC 是当前主流选择,配合 -XX:MaxGCPauseMillis=200 可设定预期停顿目标(注意:这是软目标,非硬保证)。 - 超大堆(≥ 64GB)或对延迟极度敏感(如金融交易):考虑 -XX:+UseZGC(JDK 11+)或 -XX:+UseShenandoahGC(JDK 12+),两者都支持并发标记与清理,典型停顿控制在 10ms 内。 - CMS 已在 JDK 9 中被标记废弃、JDK 14 彻底移除,新项目严禁使用。

辅助但实用的诊断参数

上线前建议加上,便于出问题时快速定位。 - -Xlog:gc*:gc.log:time,tags,level(JDK 10+ 推荐语法)或旧版 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:gc.log,记录每次 GC 类型、耗时、前后堆占用。 - -XX:+PrintCommandLineFlags 启动时自动打印 JVM 实际生效的参数(含隐式设置),验证配置是否被正确加载。 - -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dumps,发生 OOM 时自动生成堆转储,供 MAT 或 JProfiler 分析内存泄漏点。

不复杂但容易忽略。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

java虚拟机

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系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

40

12

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

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

2026.09.30

40

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

120

15

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

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

2026.09.22

80

12

热门下载

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

精品课程

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