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


相关文章
|
2月前
|
DataWorks Java 关系型数据库
DataWorks常见问题之将预警信息发送至邮箱
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
43 1
|
2月前
|
Java 开发工具
JDK、JRE、JVM三者之间的关系
JDK、JRE、JVM三者之间的关系
25 0
JDK、JRE、JVM三者之间的关系
|
2月前
|
安全 前端开发 Java
JDK源码级别彻底剖析JVM类加载机制
JDK源码级别彻底剖析JVM类加载机制
|
2月前
|
缓存 算法 安全
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(二)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
19 0
|
2月前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
86 0
|
1天前
|
Java 编译器 对象存储
java一分钟之Java入门:认识JDK与JVM
【5月更文挑战第7天】本文介绍了Java编程的基础——JDK和JVM。JDK是包含编译器、运行时环境、类库等的开发工具包,而JVM是Java平台的核心,负责执行字节码并实现跨平台运行。常见问题包括版本不匹配、环境变量配置错误、内存溢出和线程死锁。解决办法包括选择合适JDK版本、正确配置环境变量、调整JVM内存参数和避免线程死锁。通过代码示例展示了JVM内存管理和基本Java程序结构,帮助初学者更好地理解JDK和JVM在Java编程中的作用。
14 0
|
8天前
|
Java
jvm配置参数,查看大对象直接分配到老年代
jvm配置参数,查看大对象直接分配到老年代
|
9天前
|
小程序 Java 程序员
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
26 0
|
10天前
|
人工智能 运维 Java
Serverless 应用引擎产品使用之在阿里云函数计算中设置JVM参数如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
17 0
|
15天前
|
存储 监控 Oracle
简单介绍JDK、JRE、JVM三者区别
1995年Sun公司在SunWorld大会上发布了Java1.0版本,并提出可那个响彻云霄的“一次运行,随处编译”的口号,这句话充分的展示出了Java的跨平台特性,提到跨平台,便衍生出了我们今天需要讨论的话题,JDK、JRE、JVM三者的区别
20 2