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