jar启动命令参数
# 启动命令
以nacos
为例,nacos
官方的脚本文件提供的启动命令如下:
java -jar app.jar -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof -XX:-UseLargePages
JDK版本大于9:
-Xlog:gc*:file=${BASE_DIR}/logs/nacos_gc.log:time,tags:filecount=10,filesize=100m
JDK版本小于等于9:
-XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8
-Xloggc:${BASE_DIR}/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
2
3
# 参数说明
-server
:指定JVM
运行模式为server
模式。-Xms2g
:指定JVM
初始堆内存大小为2G
。-Xmx2g
:指定JVM
最大堆内存大小为2G
。-Xmn1g
:指定JVM
新生代内存大小为1G
。-XX:MetaspaceSize=128m
:指定JVM
元空间初始大小为128M
。-XX:MaxMetaspaceSize=320m
:指定JVM
元空间最大大小为320M
。-XX:-OmitStackTraceInFastThrow
:禁用JVM
在快速抛出异常时省略堆栈信息。-XX:+HeapDumpOnOutOfMemoryError
:当JVM
发生OOM
时,生成堆转储文件。-XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof
:指定堆转储文件的路径。-XX:-UseLargePages
:禁用大页内存。-XX:+UseConcMarkSweepGC
:指定JVM
使用CMS
垃圾收集器。-XX:+UseCMSCompactAtFullCollection
:指定CMS
在进行Full GC
后进行内存碎片整理。-XX:CMSInitiatingOccupancyFraction=70
:指定CMS
在老年代使用率达到70%
时触发CMS GC
。-XX:+CMSParallelRemarkEnabled
:在CMS
的remark
阶段并行标记。-XX:SoftRefLRUPolicyMSPerMB=0
:设置软引用的清理策略,0表示最大的敏感性,即一旦发生GC,所有软引用对象都会被清理掉。-XX:+CMSClassUnloadingEnabled
:启用CMS
类卸载。-XX:SurvivorRatio=8
:设置Eden
区和Survivor
区的比例为8:1
。-verbose:gc
:打印GC
日志。
对于JDK
版本大于等于9
的JVM
,GC
日志参数:
-Xlog:gc*:file=${BASE_DIR}/logs/nacos_gc.log:time,tags:filecount=10,filesize=100m
-Xlog:gc*
表示记录所有的垃圾收集活动。file=${BASE_DIR}/logs/nacos_gc.log
指定日志目录。time,tags
表示在每条日志消息中包含时间戳和标签。filecount=10,filesize=100m
表示日志文件的最大数量为10,每个日志文件的最大大小为100MB。当日志文件达到这个大小时,Java会关闭当前的日志文件,并打开一个新的日志文件。
对于JDK
版本小于9
的JVM
,GC
日志参数:
-Xloggc:${BASE_DIR}/logs/nacos_gc.log
:指定GC
日志文件的路径。-XX:+PrintGCDetails
:打印GC
的详细信息。-XX:+PrintGCDateStamps
:打印GC
的时间戳。-XX:+UseGCLogFileRotation
:启用GC
日志文件的轮转。
在设置gc日志参数的时候需要注意:
日志路径需要是已存在的,否则无法生成日志文件。
使用Xlogc设置gc日志需要动态生成日志文件名,否则程序重启会覆盖之前的日志文件。即设置成
-Xloggc:${BASE_DIR}/logs/nacos_gc$(date +%Y%m%d%H%M%S).log
# 指定配置文件参数
--spring.profiles.active=local
# 或者
-Dspring.profiles.active=local
2
3
4
# GC日志参数
# 脚本
# 启动脚本
#!/bin/bash
JAR_FILE=$1
JAVA_OPTS="-Xms64m -Xmx256m -Xss1m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump"
# 在新的终端中启动 并且设置终端标题
start bash -c "echo -ne '\033]0;${JAR_FILE}\007'; java -jar ${JAVA_OPTS} -Dspring.profiles.active=local ${JAR_FILE} exec bash"
2
3
4
5
6
7