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月前
|
存储 算法 Java
jvm性能优化(一)-基于JDK1.8
jvm性能优化(一)-基于JDK1.8
|
1月前
|
监控 架构师 Java
JVM进阶调优系列(6)一文详解JVM参数与大厂实战调优模板推荐
本文详述了JVM参数的分类及使用方法,包括标准参数、非标准参数和不稳定参数的定义及其应用场景。特别介绍了JVM调优中的关键参数,如堆内存、垃圾回收器和GC日志等配置,并提供了大厂生产环境中常用的调优模板,帮助开发者优化Java应用程序的性能。
|
1月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
46 3
|
1月前
|
Java Android开发 开发者
【编程进阶知识】精细调控:掌握Eclipse JVM参数配置的艺术
本文详细介绍了如何在Eclipse中配置JVM参数,包括内存的初始和最大值设置。通过具体步骤和截图演示,帮助开发者掌握JVM参数的精细调控,以适应不同的开发和测试需求。
43 1
|
3月前
|
Java
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
|
3月前
|
Java 编译器 测试技术
Java零基础教学(03):如何正确区别JDK、JRE和JVM??
【8月更文挑战第3天】Java零基础教学篇,手把手实践教学!
64 2
|
3月前
|
C# 开发者 Windows
震撼发布:全面解析WPF中的打印功能——从基础设置到高级定制,带你一步步实现直接打印文档的完整流程,让你的WPF应用程序瞬间升级,掌握这一技能,轻松应对各种打印需求,彻底告别打印难题!
【8月更文挑战第31天】打印功能在许多WPF应用中不可或缺,尤其在需要生成纸质文档时。WPF提供了强大的打印支持,通过`PrintDialog`等类简化了打印集成。本文将详细介绍如何在WPF应用中实现直接打印文档的功能,并通过具体示例代码展示其实现过程。
318 0
|
3月前
|
运维 监控 Java
【JVM 调优秘籍】实战指南:JVM 调优参数全解析,让 Java 应用程序性能飙升!
【8月更文挑战第24天】本文通过一个大型在线零售平台的例子,深入探讨了Java虚拟机(JVM)性能调优的关键技术。面对应用响应延迟的问题,文章详细介绍了几种常用的JVM参数调整策略,包括堆内存大小、年轻代配置、垃圾回收器的选择及日志记录等。通过具体实践(如设置`-Xms`, `-Xmx`, `-XX:NewRatio`, `-XX:+UseParallelGC`等),成功降低了高峰期的响应时间,提高了系统的整体性能与稳定性。案例展示了合理配置JVM参数的重要性及其对解决实际问题的有效性。
101 0
|
3月前
|
缓存 Java 编译器
JRE、JDK、JVM 和 JIT 之间的区别详解
【8月更文挑战第22天】
138 0
|
3月前
|
Arthas Prometheus 监控
使用JDK自带工具调优JVM的常用命令
使用JDK自带工具调优JVM的常用命令