惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
博客园 - Franky
Martin Fowler
Martin Fowler
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
Recent Announcements
Recent Announcements
The Cloudflare Blog
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
J
Java Code Geeks
B
Blog RSS Feed
博客园 - 三生石上(FineUI控件)
MongoDB | Blog
MongoDB | Blog
腾讯CDC
博客园_首页
博客园 - 司徒正美
D
DataBreaches.Net
I
InfoQ
GbyAI
GbyAI
IT之家
IT之家
罗磊的独立博客

博客园 - sikewang

Gradle的init.d的init.gradle , init.d的位置 , x.gradle或x.gradle.kts的位置 maven wrapper 介绍及使用详解 Plugin [id: 'org.gradle.kotlin.kotlin-dsl', version: '4.2.1'] was not found in any of the following sources: JEnv-for-Windows 安装与使用 jenv报错无法加载文件jenv.ps1 Warning! PATH is not properly set up, /Users/i/.rvm/gems/ruby-3.3.0/bin is not at first place.摘抄整理 mac上如何用fvm设置全局Flutter SDK? Inconsistent JVM-target compatibility detected for tasks 'compileDebugJavaWithJavac' (1.8) and 'compileDebugKotlin' (17). fvm Flutter多版本管理安装与常用指令 Elastic Search 安装部署最全教程(Docker) VMware中Ubuntu配置固定IP 下载Android SDK tools完成Android SDK 安装、配置环境变量 Oracle JDK究竟从哪个版本开始收费? 报红 import 'package:http/http.dart' as http; import 'package:date_format/date_format.dart'; Flutter doctor CSRF攻击与防御 windows查看文件/夹被哪个进程占用以及解除方法 windows上安装nvm-noinstall.zip 修改chrome用户数据的路径
JVM_XMS 和 java_opts哪种写法对?如何在JVM中设置JVM_XMS和ja...
sikewang · 2025-10-06 · via 博客园 - sikewang

JVM_XMS 和 java_opts哪种写法对?

JVM_XMS与JAVA_OPTS是两种不同的JVM参数设置方式,具体写法需根据使用场景选择:

JVM_XMS(初始堆大小)

  • 写法‌::ml-search-more[-Xms]{text="-Xms"}(如-Xms512m
  • 适用场景‌:用于指定JVM启动时分配的初始内存大小。建议设置为物理内存的80%以避免内存不足。 ‌12

JAVA_OPTS(通用配置)

  • 写法‌:通过环境变量设置,如set JAVA_OPTS="-Xms512m -Xmx2048m"
  • 适用场景‌:包含多个参数配置,例如:
    • 内存设置:-Xms:ml-search-more[-Xmx]{text="-Xmx"}(如-Xms2g -Xmx4g) ‌23
    • 垃圾回收器::ml-search-more[-XX]{text="-XX"}:+UseConcMarkSweepGC ‌‌3
    • 线程栈大小:-Xss256k ‌‌4
    • 元空间::ml-search-more[-XX:MetaspaceSize]{text="-XX:MetaspaceSize"}=1024m ‌‌3

注意事项

  1. 兼容性‌:-XX:参数需注意版本差异,例如:ml-search-more[-XX:PermSize]{text="-XX:PermSize"}在Java 8后被:ml-search-more[-XX:MetaspaceSize]{text="-XX:MetaspaceSize"}替代。 ‌13
  2. 调优建议‌:高并发应用建议将-Xms-Xmx设为相同值,避免内存收缩/突增导致的性能问题。 ‌12
  3. 环境变量设置‌:Linux/Unix可通过:ml-search-more[\~/.bashrc]{text="\~/.bashrc"}添加持久化配置,Windows通过系统属性设置。 ‌‌2

如何在JVM中设置JVM_XMS和java_opts? 

在JVM中设置JVM_XMSJAVA_OPTS的正确方式如下:

1. ‌直接通过命令行设置

  • -Xms参数用于指定JVM初始堆内存大小,例如:

    java -Xms2048M -Xmx2048M -jar application.jar

    这里-Xms2048M表示初始堆内存为2GB,通常建议与-Xmx(最大堆内存)设为相同值以避免运行时内存动态调整带来的性能开销12。

2. ‌通过环境变量JAVA_OPTS设置

  • 在Linux/Unix系统中,可以通过export命令设置:

    export JAVA_OPTS="-Xms1024M -Xmx2048M -XX:+UseG1GC"

    启动应用时直接引用该变量:

    java $JAVA_OPTS -jar application.jar

    在Windows系统中使用set命令:

    set JAVA_OPTS="-Xms1024M -Xmx2048M" ```:ml-citation{ref="2,6" data="citationList"}。

3. ‌在容器或启动脚本中配置

  • 对于Tomcat等应用服务器,修改catalina.sh(Linux)或catalina.bat(Windows)文件,添加:

    JAVA_OPTS="-Xms1024M -Xmx2048M -XX:MetaspaceSize=512M"

    确保参数在启动脚本中被正确加载24。

4. ‌注意事项

  • 参数单位‌:M表示MB,G表示GB(如-Xms2G2。
  • 永久代与元空间‌:Java 8及以上版本使用-XX:MetaspaceSize替代-XX:PermSize,建议将初始值和最大值设为相同以避免Full GC17。
  • 线程栈大小‌:通过-Xss设置(如-Xss256k),需根据应用线程数调整16。

5. ‌推荐实践

  • 生产环境中,建议通过JAVA_OPTS统一管理参数,并在启动脚本中引用,便于维护和扩展46。
  • 对于容器化部署(如Docker),可通过环境变量传递参数:

    ENV JAVA_OPTS="-Xms1G -Xmx2G" CMD java $JAVA_OPTS -jar app.jar ```:ml-citation{ref="4" data="citationList"}。

通过以上方式可灵活配置JVM内存及调优参数,具体数值需根据应用需求和服务器资源调整