当前位置: 代码网 > it编程>编程语言>Java > Java中-jar命令参数设置的完整指南

Java中-jar命令参数设置的完整指南

2026年03月15日 Java 我要评论
java -jar命令的参数设置可以分为几类,以下是详细的参数说明:一、标准参数(standard options)1.jvm 内存设置# 堆内存设置-xms512m # 初

java -jar 命令的参数设置可以分为几类,以下是详细的参数说明:

一、标准参数(standard options)

1.jvm 内存设置

# 堆内存设置
-xms512m              # 初始堆大小
-xmx2g                # 最大堆大小
-xmn1g                # 新生代大小
# 方法区(元空间)设置
-xx:metaspacesize=256m   # 初始元空间大小
-xx:maxmetaspacesize=512m # 最大元空间大小
# 栈内存设置
-xss256k              # 每个线程的栈大小

2.gc 相关参数

# 指定垃圾收集器
-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

二、系统属性设置

1.使用 -d 设置系统属性

java -jar \
  -dserver.port=8080 \
  -dspring.profiles.active=prod \
  -dlogging.level.root=info \
  -djava.net.preferipv4stack=true \
  app.jar

2.常用系统属性示例

# 网络相关
-djava.net.preferipv4stack=true
-djava.net.preferipv6addresses=false

# 文件编码
-dfile.encoding=utf-8
-dsun.jnu.encoding=utf-8

# 时区设置
-duser.timezone=asia/shanghai

# 安全策略
-djava.security.egd=file:/dev/./urandom  # 加速随机数生成

三、程序参数

1.在 jar 文件后添加程序参数

java -jar app.jar --server.port=9090 --spring.datasource.url=jdbc:mysql://localhost:3306/db

2.标准输入输出重定向

java -jar app.jar > output.log 2>&1       # 重定向输出和错误到文件
java -jar app.jar < input.txt             # 从文件读取输入

四、完整示例

1.spring boot 应用示例

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.微服务应用配置

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

五、性能优化参数

1.jit 编译优化

-xx:+tieredcompilation      # 分层编译(java 8 默认)
-xx:tieredstopatlevel=1     # 只使用 c1 编译器
-xx:reservedcodecachesize=256m  # 代码缓存大小

2.堆外内存设置

-xx:maxdirectmemorysize=256m    # 直接内存大小
-dio.netty.maxdirectmemory=0    # netty 直接内存设置

3.监控和调试

# 内存溢出时生成堆转储
-xx:+heapdumponoutofmemoryerror
-xx:heapdumppath=./heapdump.hprof

# jmx 监控
-dcom.sun.management.jmxremote
-dcom.sun.management.jmxremote.port=9010
-dcom.sun.management.jmxremote.authenticate=false
-dcom.sun.management.jmxremote.ssl=false

# 远程调试
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

六、容器环境优化

docker/k8s 环境

# 使用容器内存限制
-xx:+usecontainersupport      # 自动使用容器内存限制(java 8u191+)
-xx:maxrampercentage=75.0     # 使用容器内存的 75%
-xx:initialrampercentage=50.0 # 初始使用 50%

# 或者直接设置
-xx:maxram=$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes)

七、常见问题解决参数

1.时区问题

-duser.timezone=gmt+08

2.dns 缓存

-dsun.net.inetaddr.ttl=60      # dns 缓存时间(秒)

3.ssl/tls 设置

-djavax.net.debug=ssl          # 调试 ssl
-dhttps.protocols=tlsv1.2,tlsv1.3

八、命令行使用技巧

1.多行书写(linux/mac)

java -jar \
  -xmx2g \
  -dspring.profiles.active=prod \
  app.jar

2.windows 环境

java -jar ^
  -xmx2g ^
  -dspring.profiles.active=prod ^
  app.jar

3.使用环境变量

export java_opts="-xmx2g -dspring.profiles.active=prod"
java $java_opts -jar app.jar

注意事项

  • 参数顺序:jvm 参数在 -jar 之前,程序参数在 jar 文件之后
  • 内存设置:根据应用实际情况调整,避免过大或过小
  • 监控配置:生产环境建议配置 gc 日志和内存溢出转储
  • 版本兼容:某些参数仅适用于特定 java 版本

根据具体应用需求和运行环境,选择合适的参数组合可以显著提升应用性能和稳定性。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com