zoukankan      html  css  js  c++  java
  • Java启动参数和脚本

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


    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 自定义参数

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

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






    2. 启停脚本

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


    2.1 判断 Java 进程是否存在

    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 启停脚本

    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
    


  • 相关阅读:
    Java Output流写入包装问题
    SpringBoot项目单元测试不经过过滤器问题
    SpringSecurity集成启动报 In the composition of all global method configuration, no annotation support was actually activated 异常
    JWT jti和kid属性的说明
    Maven 排除依赖
    第五章 基因概念的发现
    第三章 孟德尔遗传的拓展
    第二章 孟德尔遗传
    第一章 引言
    GWAS全基因组关联分析
  • 原文地址:https://www.cnblogs.com/Howlet/p/15390038.html
Copyright © 2011-2022 走看看