Java中-jar命令參數(shù)設(shè)置的完整指南
更新時間:2026年03月15日 09:28:30 作者:Full?Stack?Developme
這篇文章主要為大家詳細(xì)介紹了Java中-jar命令參數(shù)設(shè)置有哪些分類以及如何設(shè)置,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
java -jar 命令的參數(shù)設(shè)置可以分為幾類,以下是詳細(xì)的參數(shù)說明:
一、標(biāo)準(zhǔn)參數(shù)(Standard Options)
1.JVM 內(nèi)存設(shè)置
# 堆內(nèi)存設(shè)置 -Xms512m # 初始堆大小 -Xmx2g # 最大堆大小 -Xmn1g # 新生代大小 # 方法區(qū)(元空間)設(shè)置 -XX:MetaspaceSize=256m # 初始元空間大小 -XX:MaxMetaspaceSize=512m # 最大元空間大小 # 棧內(nèi)存設(shè)置 -Xss256k # 每個線程的棧大小
2.GC 相關(guān)參數(shù)
# 指定垃圾收集器 -XX:+UseG1GC # 使用 G1 收集器 -XX:+UseParallelGC # 使用并行收集器 -XX:+UseConcMarkSweepGC # 使用 CMS 收集器 -XX:+UseZGC # 使用 ZGC(Java 11+) -XX:+UseShenandoahGC # 使用 ShenandoahGC # GC 日志 -Xlog:gc*:logs/gc.log:time,uptime,level,tags -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution
二、系統(tǒng)屬性設(shè)置
1.使用 -D 設(shè)置系統(tǒng)屬性
java -jar \ -Dserver.port=8080 \ -Dspring.profiles.active=prod \ -Dlogging.level.root=INFO \ -Djava.net.preferIPv4Stack=true \ app.jar
2.常用系統(tǒng)屬性示例
# 網(wǎng)絡(luò)相關(guān) -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false # 文件編碼 -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 # 時區(qū)設(shè)置 -Duser.timezone=Asia/Shanghai # 安全策略 -Djava.security.egd=file:/dev/./urandom # 加速隨機(jī)數(shù)生成
三、程序參數(shù)
1.在 jar 文件后添加程序參數(shù)
java -jar app.jar --server.port=9090 --spring.datasource.url=jdbc:mysql://localhost:3306/db
2.標(biāo)準(zhǔn)輸入輸出重定向
java -jar app.jar > output.log 2>&1 # 重定向輸出和錯誤到文件 java -jar app.jar < input.txt # 從文件讀取輸入
四、完整示例
1.Spring Boot 應(yīng)用示例
java -jar \ -Xms512m \ -Xmx2g \ -Xmn256m \ -XX:MetaspaceSize=128m \ -XX:MaxMetaspaceSize=256m \ -XX:+UseG1GC \ -XX:+PrintGCDetails \ -XX:+PrintGCDateStamps \ -Xloggc:./logs/gc.log \ -Dspring.profiles.active=prod \ -Dserver.port=8080 \ -Dfile.encoding=UTF-8 \ -Duser.timezone=Asia/Shanghai \ myapp.jar \ --logging.file.path=./logs \ --spring.datasource.url=jdbc:mysql://localhost:3306/mydb
2.微服務(wù)應(yīng)用配置
java -jar \ -Xms1g \ -Xmx2g \ -XX:+UseZGC \ -XX:+ZGenerational \ -XX:MaxGCPauseMillis=200 \ -XX:+HeapDumpOnOutOfMemoryError \ -XX:HeapDumpPath=./heapdump.hprof \ -Dspring.cloud.config.uri=http://config-server:8888 \ -Deureka.client.serviceUrl.defaultZone=http://eureka:8761/eureka \ -Dspring.zipkin.base-url=http://zipkin:9411 \ service.jar
五、性能優(yōu)化參數(shù)
1.JIT 編譯優(yōu)化
-XX:+TieredCompilation # 分層編譯(Java 8 默認(rèn)) -XX:TieredStopAtLevel=1 # 只使用 C1 編譯器 -XX:ReservedCodeCacheSize=256m # 代碼緩存大小
2.堆外內(nèi)存設(shè)置
-XX:MaxDirectMemorySize=256m # 直接內(nèi)存大小 -Dio.netty.maxDirectMemory=0 # Netty 直接內(nèi)存設(shè)置
3.監(jiān)控和調(diào)試
# 內(nèi)存溢出時生成堆轉(zhuǎn)儲 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./heapdump.hprof # JMX 監(jiān)控 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false # 遠(yuǎn)程調(diào)試 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
六、容器環(huán)境優(yōu)化
Docker/K8s 環(huán)境
# 使用容器內(nèi)存限制 -XX:+UseContainerSupport # 自動使用容器內(nèi)存限制(Java 8u191+) -XX:MaxRAMPercentage=75.0 # 使用容器內(nèi)存的 75% -XX:InitialRAMPercentage=50.0 # 初始使用 50% # 或者直接設(shè)置 -XX:MaxRAM=$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes)
七、常見問題解決參數(shù)
1.時區(qū)問題
-Duser.timezone=GMT+08
2.DNS 緩存
-Dsun.net.inetaddr.ttl=60 # DNS 緩存時間(秒)
3.SSL/TLS 設(shè)置
-Djavax.net.debug=ssl # 調(diào)試 SSL -Dhttps.protocols=TLSv1.2,TLSv1.3
八、命令行使用技巧
1.多行書寫(Linux/Mac)
java -jar \ -Xmx2g \ -Dspring.profiles.active=prod \ app.jar
2.Windows 環(huán)境
java -jar ^ -Xmx2g ^ -Dspring.profiles.active=prod ^ app.jar
3.使用環(huán)境變量
export JAVA_OPTS="-Xmx2g -Dspring.profiles.active=prod" java $JAVA_OPTS -jar app.jar
注意事項
- 參數(shù)順序:JVM 參數(shù)在
-jar之前,程序參數(shù)在 jar 文件之后 - 內(nèi)存設(shè)置:根據(jù)應(yīng)用實際情況調(diào)整,避免過大或過小
- 監(jiān)控配置:生產(chǎn)環(huán)境建議配置 GC 日志和內(nèi)存溢出轉(zhuǎn)儲
- 版本兼容:某些參數(shù)僅適用于特定 Java 版本
根據(jù)具體應(yīng)用需求和運行環(huán)境,選擇合適的參數(shù)組合可以顯著提升應(yīng)用性能和穩(wěn)定性。
相關(guān)文章
SpringBoot解析JSON報錯400 Bad Request的解決方案
在Spring Boot開發(fā)中,400 Bad Request錯誤是常見的客戶端錯誤之一,本文將從問題分析,排查步驟到解決方案進(jìn)行系統(tǒng)性講解,幫助開發(fā)者高效定位并修復(fù)問題2025-07-07
java隨機(jī)生成字符串(字符隨機(jī)生成類 生成隨機(jī)字符組合)
java隨機(jī)生成字符串,字符組合多樣,可以大小字組合、大+小字符+數(shù)字等方式,大家參考使用吧2013-12-12
Maven中錯誤使用parent.relativePath導(dǎo)致構(gòu)建失敗問題
這篇文章主要介紹了Maven中錯誤使用parent.relativePath導(dǎo)致構(gòu)建失敗問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
java數(shù)據(jù)結(jié)構(gòu)算法稀疏數(shù)組示例詳解
這篇文章主要為大家介紹了java數(shù)據(jù)結(jié)構(gòu)算法稀疏數(shù)組示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

