news 2026/4/23 15:37:24

JVM 核心参数调优清单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JVM 核心参数调优清单

JVM 核心参数调优清单

这份清单涵盖内存分配、GC 收集器、类加载、JIT 编译四大核心场景,参数均基于 HotSpot 虚拟机,可直接用于生产环境(建议先在测试环境验证)。

一、 内存分配参数(解决 OOM 核心)

内存分配是调优的基础,直接决定堆、方法区、虚拟机栈的大小,避免OutOfMemoryError

参数作用推荐值(示例)适用场景
-Xms<size>堆初始大小(年轻代 + 老年代)-Xms2g生产环境建议与-Xmx相同,避免 JVM 动态调整堆大小的性能开销
-Xmx<size>堆最大大小-Xmx4g根据服务器内存配置(如 8G 内存的机器,堆最大设为 4g)
-Xmn<size>年轻代大小(Eden + 2*Survivor)-Xmn1g年轻代占堆的 1/3~1/2 为宜,大年轻代减少 Minor GC 次数
-XX:SurvivorRatio=<n>Eden 与 Survivor 区的比例-XX:SurvivorRatio=8默认 8(即 Eden:S0:S1 = 8:1:1),无需频繁调整
-XX:NewRatio=<n>老年代与年轻代的比例-XX:NewRatio=2默认 2(老年代:年轻代 = 2:1),仅在未设置-Xmn时生效
-XX:MetaspaceSize=<size>元空间初始大小(替代永久代)-XX:MetaspaceSize=256m元空间存储类元数据,避免Metaspace OOM
-XX:MaxMetaspaceSize=<size>元空间最大大小-XX:MaxMetaspaceSize=512m设为 -1 表示无上限(不推荐,易占满物理内存)
-Xss<size>每个线程的虚拟机栈大小-Xss1m默认 1m(64 位系统),栈太小会触发StackOverflowError(递归深度大时需调大)

示例配置(8G 内存服务器):

java -Xms4g -Xmx4g -Xmn1g -XX:SurvivorRatio=8 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -Xss1m YourApp

二、 GC 收集器参数(提升运行效率)

选择合适的 GC 收集器,平衡吞吐量停顿时间,生产环境优先用 G1/ZGC(低停顿)。

1. 选择 GC 收集器

参数收集器类型适用场景优点缺点
-XX:+UseSerialGC串行收集器单核 / 小内存应用简单高效,无线程开销单线程回收,停顿时间长
-XX:+UseParallelGC并行收集器(吞吐量优先)后台服务 / 批处理任务多线程回收,吞吐量高停顿时间较长
-XX:+UseConcMarkSweepGCCMS 收集器(低停顿)响应时间敏感的应用并发回收,停顿短占用 CPU 资源多,内存碎片多
-XX:+UseG1GCG1 收集器(平衡吞吐量 + 低停顿)生产环境首选(JDK8+)分区回收,可控停顿时间配置复杂,JDK8 需调优参数
-XX:+UseZGCZGC 收集器(超低停顿)大内存应用(16G+)停顿时间 <10ms,支持 TB 级内存JDK11+ 才支持,需开启实验特性

2. GC 调优核心参数

(1)G1 收集器专属参数(生产首选)
参数作用推荐值
-XX:MaxGCPauseMillis=<ms>目标最大 GC 停顿时间-XX:MaxGCPauseMillis=200
-XX:G1HeapRegionSize=<size>G1 堆分区大小(1M~32M)让堆分区数在 2048 左右(如 4G 堆设为 2m)
-XX:InitiatingHeapOccupancyPercent=<n>触发混合回收的堆占用阈值-XX:InitiatingHeapOccupancyPercent=45
(2)通用 GC 日志参数(排查问题必备)
参数作用示例
-XX:+PrintGCDetails打印详细 GC 日志配合下面参数使用
-XX:+PrintGCTimeStamps打印 GC 发生的时间戳
-XX:+PrintGCDateStamps打印 GC 发生的具体日期时间
-Xloggc:<file-path>将 GC 日志输出到文件-Xloggc:/var/log/gc.log

G1 收集器完整示例

java -Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/gc.log YourApp

三、 类加载参数(解决类加载冲突)

针对类加载机制的调优,适用于自定义类加载器、打破双亲委派的场景(如 Tomcat)。

参数作用适用场景
-XX:+TraceClassLoading打印类加载的详细过程排查类重复加载、类找不到问题
-XX:+TraceClassUnloading打印类卸载的详细过程排查元空间内存泄漏
-XX:MaxTenuringThreshold=<n>对象晋升老年代的年龄阈值-XX:MaxTenuringThreshold=15(默认),调小可让对象提前进入老年代
-Djava.system.class.loader=<classname>指定系统类加载器自定义系统类加载器时使用

排查类加载问题示例

java -XX:+TraceClassLoading -XX:+TraceClassUnloading YourApp

四、 JIT 编译参数(优化热点代码执行)

调整 JIT 编译策略,让热点代码更快被编译为机器码。

参数作用推荐值
-XX:CompileThreshold=<n>方法触发 JIT 编译的调用次数阈值-XX:CompileThreshold=10000(默认)
-XX:+TieredCompilation开启分层编译(C1+C2 协同)JDK8+ 默认开启,无需手动配置
-XX:+PrintCompilation打印 JIT 编译的方法信息排查热点代码编译问题
-XX:CompileCommand=<cmd>,<class>::<method>强制编译 / 排除指定方法-XX:CompileCommand=compileOnly,com.example.User::getName

开启 JIT 日志示例

java -XX:+PrintCompilation -XX:+TieredCompilation YourApp

五、 调优注意事项

  1. 优先监控,再调优:先用jstat(监控 GC)、jmap(分析堆内存)、jstack(分析线程)定位问题,再针对性调整参数。
  2. 小步调整,对比验证:每次只改 1~2 个参数,对比调优前后的性能指标(吞吐量、停顿时间)。
  3. 生产环境禁用实验参数:如 ZGC 在 JDK11 中是实验特性,需加-XX:+UnlockExperimentalVMOptions,生产环境慎用。

我可以帮你整理一份JVM 调优工具使用指南,包括jstat/jmap/jstack的常用命令和结果解读,需要吗?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:35:59

CSS Grid Generator:5分钟快速构建完美网页布局的终极指南

CSS Grid Generator&#xff1a;5分钟快速构建完美网页布局的终极指南 【免费下载链接】cssgridgenerator &#x1f9ee; Generate basic CSS Grid code to make dynamic layouts! 项目地址: https://gitcode.com/gh_mirrors/cs/cssgridgenerator 还在为复杂的CSS网格布…

作者头像 李华
网站建设 2026/4/23 14:51:02

咸鱼流出先天all in one圣体迷你主机,完美黑苹果,搭载八代i5处理器,M2+双2.5寸硬盘,还带千兆+2.5G网口!

要说现在的小主机在颜值和扩展方面&#xff0c;真的也就是国产品牌小主机能够聆听用户声音&#xff0c;满足少部分用户的折腾需求。比如现在非常热门的all in one需求&#xff0c;奈何品牌和渠道使然&#xff0c;出货量都不算多&#xff0c;导致咸鱼二手市场上也是流出较少。有…

作者头像 李华
网站建设 2026/4/23 11:22:15

11、网络安全工具深度解析:从扫描到攻击

网络安全工具深度解析:从扫描到攻击 在网络安全的世界里,有许多工具可以帮助我们发现潜在的威胁,也可能被不法分子利用来发起攻击。下面将为大家详细介绍几种常见的网络安全工具。 1. Nessus Nessus是由Tenable Network Security发布的一款流行的开源漏洞和端口扫描器,在…

作者头像 李华
网站建设 2026/4/23 11:22:11

基于SSM的生产设备信息管理系统的设计与实现

SSM框架在生产设备信息管理系统中的应用背景 现代制造业中&#xff0c;生产设备的高效管理直接影响企业运营成本和产品质量。传统设备管理依赖人工记录和纸质文档&#xff0c;存在数据易丢失、查询效率低、维护响应慢等问题。SSM&#xff08;Spring Spring MVC MyBatis&…

作者头像 李华
网站建设 2026/4/23 13:32:52

基于Django的农场管理系统设计开发实现

技术背景Django作为Python的高效Web框架&#xff0c;具备完善的ORM、自动化管理后台和模块化设计&#xff0c;适合快速开发数据密集型系统。农场管理涉及种植计划、库存跟踪、设备维护等复杂业务流程&#xff0c;Django的MTV架构能清晰分离逻辑与展示层&#xff0c;通过内置的A…

作者头像 李华
网站建设 2026/4/22 21:49:43

终极指南:如何用DMG2IMG轻松转换苹果DMG文件为通用IMG格式

终极指南&#xff1a;如何用DMG2IMG轻松转换苹果DMG文件为通用IMG格式 【免费下载链接】dmg2img DMG2IMG allows you to convert a (compressed) Apple Disk Images (imported from http://vu1tur.eu.org/dmg2img). Note: the master branch contains imported code, but lacks…

作者头像 李华