讲师中心 微信公众号
AI工具推荐 视频效率加速

在Java里如何配置Java程序的运行参数_Java启动参数说明

大宇小哥_9461

大宇小哥_9461

发布时间:2026-01-31 03:05:08

|

821人浏览过

|

来源于php中文网

原创

Java启动参数分为JVM参数(如-Xmx2g、-Dfile.encoding=UTF-8)和程序参数(如--port 8080),前者由JVM解析,后者传入main方法;混用会导致乱码、参数丢失等问题。

在java里如何配置java程序的运行参数_java启动参数说明

Java启动参数分两类:JVM参数和程序参数,别混用

运行Java程序时传入的参数实际被分成两部分:-Xmx2g 这类以 -X、-XX、-D 开头的是JVM参数,由JVM解析并影响内存、GC、系统属性等;而 arg1 arg2 这类不带短横线的才是你程序里 main(String[] args) 接收到的程序参数。常见错误是把 -Dfile.encoding=UTF-8 放在程序参数位置,结果JVM根本读不到,导致乱码。

正确写法示例:

java -Xms512m -Xmx2g -Dlog.level=debug -jar app.jar --port 8080 --env prod

其中 -Xms512m、-Xmx2g、-Dlog.level=debug 是JVM参数;--port 8080 和 --env prod 是程序参数(假设你的应用用的是Spring Boot风格的命令行选项)。

-Xms 和 -Xmx 必须配对设置,且注意单位大小写

-Xms 控制JVM初始堆大小,-Xmx 控制最大堆大小。如果只设 -Xmx 不设 -Xms,JVM会从很小的默认值(如2MB)开始动态扩容,频繁触发GC,尤其在压测或冷启动阶段表现明显。

立即学习“Java免费学习笔记(深入)”;

  • -Xms2g 和 -Xmx2g 设成相等,可避免堆自动伸缩带来的停顿
  • 单位必须是 k、m、g(小写),-Xmx2G 在某些JVM版本会报错 Invalid initial heap size: -Xms2G
  • 不要写 -Xms=512m —— 等号是错的,正确是 -Xms512m
  • 超过4G建议启用 -XX:+UseG1GC,否则CMS或Parallel GC可能表现不佳

-D 参数用于设置系统属性,但有加载时机限制

-D 设置的键值对最终通过 System.getProperty("key") 读取,但它只在JVM启动早期生效。如果你在程序里先调用了 System.setProperties(...) 或修改了 System.getProperties(),后续再用 -D 设置的值可能被覆盖或忽略。

windows-auto
windows-auto

Windows 桌面自动化技能,支持鼠标控制(移动/点击/拖拽/滚轮/截图)、键盘输入(文字输入/按键/组合键)、窗口管理(查找/聚焦/最大化/最小化/关闭/移动)、截图并发送文件。提供两种截图方式:Python pyautogui 截图(集成在自动化流程中)和 PowerShell + .NET 零依赖截图(支持区域截图和多显示器)。当用户需要自动化 Windows 桌面操作、控制鼠标键盘、管理窗口、执行 GUI 自动化任务、截图发送文件时使用。

下载

典型使用场景:

  • -Dfile.encoding=UTF-8:避免读文件/控制台输出乱码(尤其Windows默认GBK)
  • -Duser.timezone=GMT+8:防止 SimpleDateFormat 或 java.time 默认用系统时区出错
  • -Djava.security.egd=file:/dev/./urandom:加速SecureRandom初始化(Linux容器常见卡顿点)

注意:-D 不能用来传业务配置,比如 -Ddb.url=jdbc:mysql://... —— 这种应交给配置中心或application.yml,否则运维无法动态调整。

IDE里配置参数容易漏掉“程序参数”区域

IntelliJ IDEA 或 Eclipse 的 Run Configuration 中,有两个独立输入框:“VM options”和“Program arguments”。新手常把所有参数都塞进 VM options,结果 args 数组为空,程序逻辑拿不到命令行开关。

排查方法:

  • 在 main 方法开头加 System.out.println(Arrays.toString(args));,确认是否真收到了
  • 检查IDE配置页签是否选错(例如误配到 JUnit 配置而非 Application 配置)
  • Maven插件运行时(mvn spring-boot:run),要用 -Dspring-boot.run.jvmArguments=... 传JVM参数,程序参数则用 -Dspring-boot.run.arguments=...

容器环境更需小心:Docker中 java -jar 命令的参数顺序、entrypoint脚本是否意外截断了参数、Kubernetes的 args: 字段是否被YAML解析器拆分——这些地方都容易让 --debug 类参数消失不见。

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2413

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1459

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

855

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3392

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

5808

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1259

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6071

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

5262

2023.08.14

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

热门下载

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

精品课程

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

共1课时 | 193人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn