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

发布时间 - 2026-02-01 00:00:00    点击率:
Java程序启动参数由JVM进程启动时通过命令行传入,必须置于-jar或主类名之前,否则被当作程序参数;常见参数包括内存(-Xms/-Xmx)、GC(-XX:+UseG1GC)、系统属性(-D)和调试(-XX:+HeapDumpOnOutOfMemoryError)等。

Java程序启动参数不是写在代码里的,而是由JVM进程启动时通过命令行或启动脚本传入的;配错参数可能导致OutOfMemoryError、类加载失败、GC行为异常,甚至JVM直接拒绝启动。

怎么传启动参数给Java程序

核心就是用java命令加参数再跟主类或JAR路径。顺序不能乱:JVM参数必须在-jar或主类名之前,否则会被当成程序参数传给main(String[])方法。

  • java -Xmx512m -XX:+UseG1GC -Dfile.encoding=UTF-8 -jar app.jar ✅ 正确:JVM参数在-jar
  • java -jar app.jar -Xmx512m ❌ 错误:-Xmx512m变成程序参数,JVM完全忽略
  • IDE(如IntelliJ)里要填在「Run Configuration」→「VM options」栏,不是「Program arguments

常见必须知道的JVM参数分类

参数分三类:标准(-X开头)、非标准(-XX:开头)、预览/实验性(需显式启用)。生产环境尤其注意-XX:参数的版本兼容性——比如-XX:+UseZGC在JDK 11+才稳定,JDK 8不识别会直接报错退出。

  • 内存相关:-Xms(初始堆)、-Xmx(最大堆)、-XX:MetaspaceSize(元空间初始大小)
  • GC相关:-XX:+UseG1GC-XX:+UseZGC-XX:MaxGCPauseMillis=200
  • 系统属性:-Duser.timezone=Asia/Shanghai-Dspring.profiles.active=prod
  • 调试诊断:-XX:+HeapDumpOnOutOfMemoryError-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

Spring Boot应用的特殊处理

Spring Boot打包成fat jar后,仍走标准JVM参数机制,但部分配置(如spring.*)可通过-D或外部application.properties覆盖。注意优先级:命令行-D > application.properties > 默认值。

  • 想指定配置文件:java -Dspring.config.location=file:/opt/conf/application-prod.yml -jar app.jar
  • 避免踩坑:-D参数里有空格或特殊字符(如=)必须用引号包裹,例如-Dlogging.level.com.example=DEBUG
  • 不要混淆:--server.port=8081是Spring Boot的「程序参数」,不是JVM参数,必须放在-jar之后

最常被忽略的是参数作用域——-Xmx只管堆内存,不影响直接内存(-XX:MaxDirectMemorySize)、线程栈(-Xss)或元空间;线上OOM时,得先看日志里报的是哪块内存溢出,再对症调参。


# java  # app  #   # ai  # 配置文件  # 作用域  # spring  # spring boot  # xss  # jvm  # 参数作用域  # String  #   # 线程  # location  # ide  # 的是  # 命令行  # 启动时  # 放在  # 是由  # 线上  # 报错  # 可通过  # 写在  # 则会 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  在centOS 7安装mysql 5.7的详细教程  JavaScript常见的五种数组去重的方式  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  个人摄影网站制作流程,摄影爱好者都去什么网站?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  b2c电商网站制作流程,b2c水平综合的电商平台?  Python文件流缓冲机制_IO性能解析【教程】  零基础网站服务器架设实战:轻量应用与域名解析配置指南  大同网页,大同瑞慈医院官网?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何在云虚拟主机上快速搭建个人网站?  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  Laravel如何记录自定义日志?(Log频道配置)  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  QQ浏览器网页版登录入口 个人中心在线进入  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  php485函数参数是什么意思_php485各参数详细说明【介绍】  浅谈javascript alert和confirm的美化  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  🚀拖拽式CMS建站能否实现高效与个性化并存?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  LinuxCD持续部署教程_自动发布与回滚机制  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  java中使用zxing批量生成二维码立牌  如何快速搭建虚拟主机网站?新手必看指南  三星、SK海力士获美批准:可向中国出口芯片制造设备  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Laravel模型事件有哪些_Laravel Model Event生命周期详解  node.js报错:Cannot find module 'ejs'的解决办法  网站图片在线制作软件,怎么在图片上做链接?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  公司网站制作价格怎么算,公司办个官网需要多少钱?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  浅析上传头像示例及其注意事项