• 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
    


  • 相关阅读:
    将PHP文件生成静态文件源码
    Entity Framework Code First 学习日记(6)一对多关系
    Entity Framework Code First 学习日记(5)
    Entity Framework Code First 学习日记(3)
    Entity Framework Code First 学习日记(7)多对多关系
    Entity Framework Code First学习日记(2)
    Entity Framework Code First 学习日记(8)一对一关系
    Entity Framework Code First 学习日记(9)映射继承关系
    Entity Framework Code First 学习日记(10)兼容遗留数据库
    Entity Framework Code First 学习日记(4)
  • 原文地址:https://www.cnblogs.com/Howlet/p/15390038.html
Copyright © 2020-2023  润新知