前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java启动参数和脚本

Java启动参数和脚本

作者头像
晚上没宵夜
发布2021-10-13 16:03:59
3.7K0
发布2021-10-13 16:03:59
举报

放假回来什么都不想写,加上最近在忙着看书,各种各样的书,笔记就这样落下了

1. Java启动参数

启动语法:java [-options] -jar xxx.jar [args…]

Java的启动参数有运行时参数JVM 参数,运行时参数就是 main 方法中的 args,而 JVM 参数是我们最常用的参数,下面就来说说 JVM 参数

JVM 参数分为三种:

  • 标准参数(-):相对稳定的参数,每个版本的 JVM 都可用
  • 非标X参数(-X):默认 JVM 实现参数的功能,但是不保证所有 JVM 都实现,不保证向后兼容
  • 非标XX参数(-XX):各个 JVM 实现会有所不同,将来可能会随时取消

1.1 常见标准参数

  • -cp(类搜索路径):添加后将不再使用 CLASSPATH 中的类搜索路径
  • -DKey=Value(自定义参数):预定义的参数(非-D开头)是有限的,推出了自定义参数,若值有空格用引号包括

1.2 常用X参数

  • -Xms:堆初始大小(默认为物理内存的1/64)
  • -Xmx:堆最大值(默认为物理内存的1/4或者1G)
  • -Xss:线程栈的大小(一般默认为512k)
  • -Xmn:年轻代的初始值及最大值(可用 -XX:NewSize 和 -XX:MaxNewSiz 来分别设置)

1.3 常用XX参数

-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中)

1.4 自定义参数

同事写了个功能,然后在项目启动的时候确定是否使用这个功能,挺有趣的(但好像写在配置文件里更方便)

代码语言:javascript
复制
// 加入自定义启动参数
JAVA_OPTS="-DmyArgs.enable=true -Xmx512M -Xms512M ...."
    
// 获取自定义启动参数
    if(System.getProperty("myArgs.enable")) {
    // 启动该功能
}

2. 启停脚本

项目打包后在测试环境的启停都是个体力活,刚好又给笔者遇到了,综合别人的脚本记录了一下

2.1 判断 Java 进程是否存在

代码语言:javascript
复制
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}'

2.2 启停脚本

代码语言:javascript
复制
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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Java启动参数
    • 1.1 常见标准参数
      • 1.2 常用X参数
        • 1.3 常用XX参数
          • 1.4 自定义参数
          • 2. 启停脚本
            • 2.1 判断 Java 进程是否存在
              • 2.2 启停脚本
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档