jdk(1.8) jvm 默认参数

简介: 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


相关文章
|
1月前
|
DataWorks Java 关系型数据库
DataWorks常见问题之将预警信息发送至邮箱
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
35 1
|
1月前
|
Java 开发工具
JDK、JRE、JVM三者之间的关系
JDK、JRE、JVM三者之间的关系
24 0
JDK、JRE、JVM三者之间的关系
|
1月前
|
安全 前端开发 Java
JDK源码级别彻底剖析JVM类加载机制
JDK源码级别彻底剖析JVM类加载机制
|
1月前
|
Java 编译器 测试技术
滚雪球学Java(03):你知道JDK、JRE和JVM的不同吗?看这里就够了!
【2月更文挑战第12天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!
103 4
|
2月前
|
Oracle Java 编译器
基本概念【入门、 发展简史、核心优势、各版本的含义、特性和优势、JVM、JRE 和 JDK 】(二)-全面详解(学习总结---从入门到深化)
基本概念【入门、 发展简史、核心优势、各版本的含义、特性和优势、JVM、JRE 和 JDK 】(二)-全面详解(学习总结---从入门到深化)
46 1
|
22天前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
60 0
|
4天前
|
监控 前端开发 安全
JVM工作原理与实战(十四):JDK9及之后的类加载器
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了JDK8及之前的类加载器、JDK9及之后的类加载器等内容。
|
1月前
|
监控 Java
JVM常用的命令行参数
JVM常用的命令行参数
|
1月前
|
存储 安全 Java
JDK、JRE 和 JVM 的区别和联系
JDK、JRE 和 JVM 的区别和联系
23 0
|
1月前
|
Java 编译器 API
JDK、JRE、JVM的特点和关联
JDK、JRE、JVM的特点和关联