跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
JVM调优参数
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{DISPLAYTITLE:JVM调优参数}} == 概述 == '''JVM调优参数'''(JVM Tuning Parameters)是用于调整Java虚拟机(JVM)运行时行为的配置选项,主要涉及内存管理、垃圾回收、线程堆栈等核心模块。通过合理设置这些参数,开发者可以优化应用程序的性能、减少停顿时间(GC Pause)或提高吞吐量(Throughput)。 JVM参数分为以下三类: * '''标准参数(-开头)''':所有JVM实现必须支持,如<code>-version</code>。 * '''非标准参数(-X开头)''':HotSpot虚拟机特有,如<code>-Xmx</code>。 * '''高级参数(-XX开头)''':用于开发者调试和调优,如<code>-XX:+UseG1GC</code>。 == 核心调优参数 == === 内存相关 === {| class="wikitable" ! 参数 !! 作用 !! 示例 |- | <code>-Xms</code> || 初始堆大小 || <code>-Xms512m</code> |- | <code>-Xmx</code> || 最大堆大小 || <code>-Xmx4g</code> |- | <code>-Xmn</code> || 新生代大小 || <code>-Xmn256m</code> |- | <code>-XX:MetaspaceSize</code> || 元空间初始大小 || <code>-XX:MetaspaceSize=128m</code> |} **公式**:堆总大小 = 新生代(Young) + 老年代(Old)。 <math>HeapSize = Xmn + (Xmx - Xmn) \times \frac{OldRatio}{OldRatio + 1}</math> === 垃圾回收器选择 === * '''串行GC''':<code>-XX:+UseSerialGC</code>(单线程,适合小型应用) * '''并行GC''':<code>-XX:+UseParallelGC</code>(多线程,吞吐量优先) * '''G1 GC''':<code>-XX:+UseG1GC</code>(低延迟,JDK 9+默认) === 其他关键参数 === * <code>-XX:MaxGCPauseMillis=200</code>:目标最大GC停顿时间(毫秒)。 * <code>-XX:ParallelGCThreads=4</code>:并行GC线程数。 * <code>-XX:+HeapDumpOnOutOfMemoryError</code>:内存溢出时生成堆转储文件。 == 代码示例 == 以下是一个启动Spring Boot应用时设置JVM参数的示例: <syntaxhighlight lang="bash"> java -Xms512m -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=150 -jar myapp.jar </syntaxhighlight> **输出分析**: * 初始堆512MB,最大堆2GB。 * 使用G1垃圾回收器,目标停顿时间150ms。 == 实际案例 == === 场景:电商系统高并发 === **问题**:频繁Full GC导致服务卡顿。 **调优方案**: 1. 增大堆大小:<code>-Xmx8g</code>(根据物理内存调整)。 2. 使用G1 GC并限制停顿时间:<code>-XX:+UseG1GC -XX:MaxGCPauseMillis=100</code>。 3. 启用OOM自动转储:<code>-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs</code>。 === 监控与验证 === 通过<code>jstat</code>观察GC情况: <syntaxhighlight lang="bash"> jstat -gcutil <pid> 1000 5 </syntaxhighlight> == 参数调优流程图 == <mermaid> graph TD A[分析应用需求] --> B{低延迟 or 高吞吐?} B -->|低延迟| C[选择G1/ZGC] B -->|高吞吐| D[选择ParallelGC] C --> E[设置MaxGCPauseMillis] D --> F[调整ParallelGCThreads] </mermaid> == 注意事项 == * 避免<code>-Xmx</code>超过物理内存的80%。 * 生产环境需通过压测工具(如JMeter)验证参数效果。 * 不同JDK版本参数可能失效(如JDK 8与JDK 17的差异)。 == 扩展阅读 == * [[JVM内存模型]] * [[垃圾回收算法]] {{Java}} [[Category:计算机科学]] [[Category:面试技巧]] [[Category:JVM相关]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Java
(
编辑
)