jdk(1.8) jvm 默认参数

1.查看jdk1.8 默认jvm参数

java -XX:+PrintCommandLineFlags -version

内存大小相关的选项
-Xms 设置初始堆的大小,也是最小堆的大小,它等价于:-XX:InitialHeapSize
-Xmx 设置最大堆的大小,它等价于-XX:MaxHeapSize。 
比如,下面这条命令就是设置堆的初始值为128m,最大值为2g。

java -Xms128m -Xmx2g MyApp

如果堆的初始值和最大值不一样的话,JVM会根据程序的运行情况,自动调整堆的大小,这可能会影响到一些效率。针对服务端程序,一般是把堆的最小值和最大值设置为一样来避免堆扩展和收缩对性能的影响。

他们对应的JVM参数如下

新生代(别名) 老年代 JVM 参数
Serial (DefNew) Serial Old(PSOldGen) -XX:+UseSerialGC
Parallel Scavenge (PSYoungGen) Serial Old(PSOldGen) -XX:+UseParallelGC
Parallel Scavenge (PSYoungGen) Parallel Old (ParOldGen) -XX:+UseParallelOldGC
ParNew (ParNew) Serial Old(PSOldGen) -XX:-UseParNewGC
ParNew (ParNew) CMS+Serial Old(PSOldGen) -XX:+UseConcMarkSweepGC
G1 G1 -XX:+UseG1GC

 

2.start.sh

#!/bin/bash
# START Java
#set -o errexit
set -o nounset
#The vars can be used
#--------------------------
# $def_app_id
# $def_app_name
# $def_app_domain
# $def_app_deploy_path
# $def_path_app_log
# $def_path_app_data
# $def_group_id
# $def_instance_id
# $def_instance_name
# $def_instance_path
# $def_host_ip
#--------------------------
#

echo -------------------------------------------
echo start server
echo -------------------------------------------

# 设置项目代码路径
export CODE_HOME="/export/App"
#日志路径
export LOG_PATH="/export/Logs/application"
mkdir -p $LOG_PATH
mkdir -p $CODE_HOME

# 设置依赖路径
export CLASSPATH="$CODE_HOME/classes:$CODE_HOME/lib/*"
# java可执行文件位置
export _EXECJAVA="$JAVA_HOME/bin/java"
# JVM启动参数
export JAVA_ERR_OPTS="-XX:ErrorFile=$LOG_PATH/hs_err_pid_%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_PATH "
export JAVA_COMPILE="-XX:CompileCommand=exclude,com/mysql/cj/NativeSession::execSQL "
export JAVA_OPTS="-server -Xms4096m -Xmx4096m -Xss256k -XX:MaxDirectMemorySize=256m $JAVA_ERR_OPTS $JAVA_COMPILE $JAVA_OPTS "
# 启动类
export MAIN_CLASS="com.xq.Application"
echo Using JAVA_HOME:       "$JAVA_HOME"
echo Using CLASSPATH:       "$CLASSPATH"
echo Using JAVA_OPTS:       "$JAVA_OPTS"
echo Using MAIN_CLASS:      "$MAIN_CLASS"
echo -------------------------------------------

export instance_pattern="com.xq.Application"

function check_instance
{
    # 注意此处instance_pattern不要只写应用名,会把系统启动脚本也杀掉的, >/dev/null
    pgrep -lf "$instance_pattern"
}

function start_instance
{
    local -i retry=0
    if check_instance; then
        echo "ERROR: BoardSchedulerApplication instance process has already been started" >&2
        exit 1
    fi
    setsid  $_EXECJAVA $JAVA_OPTS  -classpath $CLASSPATH $MAIN_CLASS >& /dev/null &
    sleep 1
    while true; do
        if check_instance; then
            echo "Application Instance started successfully"
            break
        elif (( retry == 20 ));then
            echo "ERROR: starting up Application instance has timed out" >&2
            exit 1
        else
            echo -n "."
            sleep 0.5
            retry=$(( $retry + 1 ))
        fi
    done
}
start_instance

 

3.stop.sh

#!/bin/bash
# STOP Java
set -o nounset
#The vars can be used
#--------------------------
# $def_app_id
# $def_app_name
# $def_app_domain
# $def_app_deploy_path
# $def_path_app_log
# $def_path_app_data
# $def_group_id
# $def_instance_id
# $def_instance_name
# $def_instance_path
# $def_host_ip
#--------------------------
#
export instance_pattern="Application"

function check_instance
{
    # 注意此处instance_pattern不要只写应用名,会把系统启动脚本也杀掉的
    pgrep -lf "$instance_pattern" >/dev/null
}

function stop_instance
{
    local -i retry=0
    if ! check_instance; then
        echo "WARNING: Application Application instance process not found, nothing to stop" >&2
        exit 0
    fi
    # 注意此处instance_pattern不要只写应用名,会把系统启动脚本也杀掉的
    pkill -f "$instance_pattern"
    while (( retry < 20 )); do
        if ! check_instance; then
            echo "Application Application Instance stopped successfully"
            return
        else
            echo -n "."
            sleep 0.5
            retry=$(( $retry + 1 ))
        fi
    done
    echo "ERROR: Fashion instance process still alive, sending SIGKILL ..." >&2
    # 注意此处instance_pattern不要只写应用名,会把系统启动脚本也杀掉的
    pkill -9 -f "$instance_pattern"
    exit $?
}
stop_instance

 

你可能感兴趣的:(java)