OpenJDK部署时JVM参数应该写在什么位置

小萱姑娘_1551

小萱姑娘_1551

2026-10-19

924人浏览

原创

java程序启动时jvm参数必须置于-jar或主类名之前,否则被当作程序参数传入main方法;-d等参数同理需前置,且spring配置文件、tomcat应用层均不处理jvm参数。

openjdk部署时jvm参数应该写在什么位置

Java命令行启动时JVM参数写在-jar前面

直接用java -jar运行时,所有JVM参数必须放在-jar之前,否则会被当作应用参数传给main方法,JVM完全忽略。

  • ✅ 正确:java -Xms512m -Xmx2g -XX:+UseG1GC -jar app.jar
  • ❌ 错误:java -jar app.jar -Xmx2g(-Xmx2g变成程序参数,堆仍按默认值分配)
  • ⚠️ 注意:-D参数也属于JVM参数,同样要前置,如-Dspring.profiles.active=prod

OpenShift/K8s容器中不能只信-Xmx

在容器环境里硬写-Xmx12g大概率失效——JVM(尤其JDK 8u191前)读的是宿主机内存,不是容器cgroup限制。结果可能是:你配了12g,实际MaxHeapSize只有2.9g。

  • ✅ JDK 8u191+:启用-XX:+UseContainerSupport(默认已开),改用-XX:MaxRAMPercentage=75.0
  • ✅ JDK 8u372+(推荐):直接用-XX:MaxRAMPercentage=75.0,自动适配cgroups v2
  • ❌ 避免混用:-Xmx和-XX:MaxRAMPercentage同时存在时,后者优先级更高,但行为可能不稳定

Spring Boot的application.properties里不能设JVM参数

application.properties或application.yml只管Spring框架层配置,比如server.port或spring.datasource.url。它对JVM内存、GC策略、线程栈等零影响。

  • ⚠️ 常见误解:有人把-Xms2g写进spring.profiles.default,完全无效
  • ✅ 正确做法:通过启动命令、容器env变量(如JAVA_OPTS)、或K8s command/args注入
  • ? 小技巧:在K8s Deployment中用env定义JAVA_OPTS,再在command中引用:["sh", "-c", "java $JAVA_OPTS -jar /app.jar"]

Tomcat部署时JVM参数写在catalina.sh/catalina.bat里

Tomcat自身是Java进程,它的JVM参数不通过webapps下的应用控制,而由其启动脚本决定。

  • Linux/macOS:编辑$CATALINA_HOME/bin/catalina.sh,在if [ "$1" = "start" ]前添加:export JAVA_OPTS="-Xms1g -Xmx2g -XX:MetaspaceSize=256m"
  • Windows:编辑%CATALINA_HOME%\bin\catalina.bat,加:set JAVA_OPTS=-Xms1g -Xmx2g
  • ⚠️ 注意:JAVA_OPTS会被Tomcat内部脚本拼接到java命令最前端,但不会覆盖掉setenv.sh里的同名变量(如果存在)
JVM参数生效位置非常具体,错一位(比如-jar前后颠倒)、错一层(比如往Spring配置里塞-Xmx)、或错一版(比如在cgroups v2环境还用-XX:+UseCGroupMemoryLimitForHeap),都会导致参数静默失效。真正起作用的永远只有最终执行的那条java命令行。

相关文章

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

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

下载

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

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

10737

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

7842

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

6832

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

1164

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

948

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1396

5

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2829

5

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

2023.08.03

20111

3

配置java环境变量
配置java环境变量

配置Java环境变量是为了让操作系统能够识别和使用Java的相关命令和功能。本专题为大家提供配置java环境变量相关文章,帮助大家解决问题。

2023.08.03

1255

8

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
OpenJDK项目Wiki
OpenJDK项目Wiki

共0课时 | 0人学习

OpenJDK构建指南
OpenJDK构建指南

共0课时 | 0人学习

OpenJDK官网文档
OpenJDK官网文档

共0课时 | 0人学习