放假回来什么都不想写,加上最近在忙着看书,各种各样的书,笔记就这样落下了
启动语法:java [-options] -jar xxx.jar [args…]
Java的启动参数有运行时参数 和 JVM 参数,运行时参数就是 main 方法中的 args,而 JVM 参数是我们最常用的参数,下面就来说说 JVM 参数
JVM 参数分为三种:
-XX:+PrintHeapAtGC
-XX:+PrintGCDetails
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=logs/heapdump.hprof(发生OOM时,dump出快照到文件heapdump.hprof)
-XX:ErrorFile=logs/java_error%p.log( JVM 错误时把日志输出到java_error%p.log中)
同事写了个功能,然后在项目启动的时候确定是否使用这个功能,挺有趣的(但好像写在配置文件里更方便)
// 加入自定义启动参数
JAVA_OPTS="-DmyArgs.enable=true -Xmx512M -Xms512M ...."
// 获取自定义启动参数
if(System.getProperty("myArgs.enable")) {
// 启动该功能
}
项目打包后在测试环境的启停都是个体力活,刚好又给笔者遇到了,综合别人的脚本记录了一下
APP_NAME=xxx.jar
pid=jps -l | grep $APP_NAME
if [ -z $pid ]; then
echo "$APP_NAME started"
else
echo "$APP_NAME stoped"
fi
# 普通进程的
# pid=ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}'
APP_NAME=xxxx-1.0-SNAPSHOT.jar
pid=0
checkpid() {
javaps=`jps -l | grep $APP_NAME`
if [ -n "$javaps" ]; then
pid=`echo $javaps | awk '{print $1}'`
else
pid=0
}
start() {
checkpid
if [ $psid -ne 0 ]; then
echo "$APP_NAME already started"
else
echo "Starting $APP_NAME ..."
`nohup java -jar $APP_NAME > $APP_NAME'.out' 2>&1 &`
checkpid
if [ $pid -ne 0]; then
echo "$APP_NAME start success"
else
echo "$APP_NAME start faild"
fi
fi
}
stop() {
checkpid
if [ $pid -ne 0 ]; then
echo "Stoping $APP_NAME..."
kill -9 $pid
if [$? -eq 0 ]; then
echo "$APP_NAME stop success"
else
echo "$APP_NAME stop faild"
fi
else
echo "$APP_NAME already stoped"
fi
}
case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart')
stop
start
;;
*) # 其他任何情况
echo "help: $0 {start|stop|restart}"
echo "例子: ./deploy start
exit 1
esac
exit 0