【Java】JDK8 jvm参数配置及说明

这篇具有很好参考价值的文章主要介绍了【Java】JDK8 jvm参数配置及说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参数

说明

1.堆内存参数设置

-Xms

-XX:InitialHeapSize=n

设置堆的初始值

指令1:-Xms2g
指令2:-XX:InitialHeapSize=2048m

-Xmx

-XX:MaxHeapSize=n

设置堆区最大值
指令1:-Xmx2g
指令2: -XX:MaxHeapSize=2048m
-XX:NewSize=n 设置年轻代大小

-Xss

-XX:ThreadStackSize=n

每个线程堆栈最大值

指令1:-Xss256k
指令2:-XX:ThreadStackSize=256k
注意:

默认堆栈大小为1M,应该128K就够用,大的堆栈建议256K,栈设置太大,会导致线程创建减少。栈设置小,会导致深入不够,深度的递归会导致栈溢出。

-Xmn

-XX:MaxNewSize=n

新生代内存配置
指令1:-Xmn512m
指令2:-XX:MaxNewSize=512m
-XX:SurvivorRatio=n

2个survivor区和Eden区大小比率
指令:-XX:SurvivorRatio=8(默认)

年轻代中Eden区与两个Survivor区的比值.注意Survivor区有两个,S区和Eden区在新生代比例为1:8,两个S区2:8

-XX:NewRatio=n

新生代和老年代的占比
-XX:NewRatio=2(默认)

表示新生代:老年代 = 1:2 即老年代占整个堆的2/3;默认值=2

如果-Xms==-Xmx,且设置了-Xmn的情况下,不用设置此参数。

-Duser.timezone=GMT+08 指定时区
‐Dfile.encoding=UTF‐8 指定默认的文件编码

2.垃圾回收器设置

-XX:+PrintGC

简单打印GC日志
-XX:+PrintGCDetails 详细打印GC日志
-XX:+PrintHeapAtGC 打印GC前后详细的堆栈信息
-XX:+PrintGCTimeStamps GC发生时,额外输出GC发生的时间,该输出时间为虚拟机启动后的时间偏移量
-XX:+PrintGCDateStamps GC发生时,带时区的日期打印
-XX:+PrintGCApplicationConcurrentTime 打印每次垃圾回收前,应用程序未中断执行时间
-XX:+PrintGCApplicationStoppedTime 打印应用程序由于GC而产生的停顿时间
-XX:+PrintReferenceGC 跟踪系统内的软引用,弱引用,虚引用和Finallize队列

2.1 GC回收日志打印

-Xloggc:log/gc.log

指定gc日志输出的文件路径。

JDK8开始支持使用%p,%t等占位符来指定GC输出文件。分别表示进程pid和启动时间戳。

例如: 

-Xloggc:/data/gclog/gc.log 固定路径名称生成

-Xloggc:/data/gclog/gc-%t.log  根据时间生成

-Xloggc:/data/gclog/gc-%p.log  根据进程pid生成

-XX:+UseGCLogFileRotation 滚动生成日志
日志文件达到一定大小后,生成另一个文件,须配置-Xloggc
-XX:NumberOfGCLogFiles=n -XX:NumberOfGCLogFiles=4 滚动GC日志文件数,默认0,不滚动,需配置UseGCLogFileRotation,设置为0表示仅通过jcmd命令触发
-XX:GCLogFileSize=n -XX:GCLogFileSize=100k GC文件滚动大小,需配置UseGCLogFileRotation,设置为0表示仅通过jcmd命令触发

2.2 堆内存溢出配置

-XX:+HeapDumpOnOutOfMemoryError

内存溢出时导出整个堆信息,让JVM遇到OOM异常时能输出堆内信息,并通过(-XX:+HeapDumpPath)参数设置堆内存溢出快照输出的文件地址

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=./log/dump/

-XX:HeapDumpPath 指定导出堆的存放路径
-XX:OnOutOfMemoryError=“”

利用这个参数,我们可以在系统OOM后,自定义一个脚本,可以用来发送邮件告警信息,可以用来重启系统等等。

-XX:OnOutOfMemoryError="/opt/local/bin/alert.sh"

-XX:+HeapDumpBeforeFullGC 实现在Full GC前dump
-XX:HeapDumpPath=/logs/设置Dump保存的路径
-XX:+HeapDumpAfterFullGC

实现在Full GC后dump

-XX:HeapDumpPath=/logs/设置Dump保存的路径

2.3 垃圾回收器配置

-XX:+UseSerialGC 允许使用串行垃圾收集器。对于不需要垃圾收集的任何特殊功能的小型和简单应用程序,这通常是最佳选择。默认情况下,禁用此选项,并根据计算机的配置和JVM的类型自动选择收集器。
-XX:+UseParallelGC

允许使用并行清除垃圾收集器(也称为吞吐量收集器),通过利用多个处理器来提高应用程序的性能。

默认情况下,禁用此选项,并根据计算机的配置和JVM的类型自动选择收集器。如果已启用,则会-XX:+UseParallelOldGC自动启用该选项,除非您明确禁用它。

-XX:+UseParalledlOldGC 允许将并行垃圾收集器用于完整的GC。默认情况下,禁用此选项。启用它会自动启用该-XX:+UseParallelGC选项。
-XX:+UseConcMarkSweepGC

允许为老年代使用CMS垃圾收集器。Oracle建议您在spam(-XX:+UseParallelGC)垃圾收集器无法满足应用程序延迟要求时使用CMS垃圾收集器。G1垃圾收集器(-XX:+UseG1GC)是另一种选择。

默认情况下,禁用此选项,并根据计算机的配置和JVM的类型自动选择收集器。启用此选项后,将-XX:+UseParNewGC自动设置该选项,您不应禁用该选项,因为JDK 8中已弃用以下选项组合:-XX:+UseConcMarkSweepGC -XX:-UseParNewGC

-XX:+UseParNewGC 允许在年轻代中使用并行线程进行收集。默认情况下,禁用此选项。设置-XX:+UseConcMarkSweepGC选项时会自动启用它。使用-XX:+UseParNewGC不带选项-XX:+UseConcMarkSweepGC的选择是在JDK 8弃用
-XX:+UseG1GC 允许使用垃圾优先(G1)垃圾收集器。它是一个服务器式垃圾收集器,针对具有大量RAM的多处理器机器。它以高概率满足GC暂停时间目标,同时保持良好的吞吐量。G1收集器推荐用于需要大堆(大小约为6 GB或更大)且GC延迟要求有限的应用(稳定且可预测的暂停时间低于0.5秒)
-XX:ParallelGCThreads=n

GC并行执行线程数

-XX:ParallelGCThreads=16

3.辅助指令(查看或修改正在运行的JVM 某项配置)

jinfo -flag 参数 pid

查看HeapDumpOnOutOfMemoryError 配置是否开启

jinfo -flag HeapDumpOnOutOfMemoryError 10001

修改HeapDumpOnOutOfMemoryError 配置(-关闭 +开启)

jinfo -flag +HeapDumpOnOutOfMemoryError 10001

-XX:+PrintFlagsFinal

查看jvm参数配置

-XX:+PrintFlagsFinal |grep GC 查看与GC相关参数配置

-XX:+PrintCommandLineFlags

打印已经被用户或者当前虚拟机设置过的参数

-XX:+PrintCommandLineFlags -version 查看GC堆的初始大小以及GC收集器类型

4.JDK8的JVM启动参数默认配置

  • -Xms2g -Xmx2g (按不同容器,4G及以下建议为50%,6G以上,建议设置为70%)
  • -XX:MetaspaceSize=128m
  • -XX:MaxMetaspaceSize=512m
  • -Xss256k
  • -XX:+UseG1GC
  • -XX:MaxGCPauseMillis=200
  • -XX:AutoBoxCacheMax=20000
  • -XX:+HeapDumpOnOutOfMemoryError (当JVM发生OOM时,自动生成DUMP文件)
  • -XX:HeapDumpPath=/data/logs/gc/
  • -XX:ErrorFile=/data/logs/gc/hs_err_%p.log (当JVM发生崩溃时,自动生成错误日志)
  • -XX:+PrintGCApplicationStoppedTime
  • -XX:+PrintGCDetails
  • -XX:+PrintGCDateStamps
  • -Xloggc:/data/logs/gc/gc-ePrint-service.log

4.禁止和废弃参数选项

-Xincgc

启用增量垃圾收集。此选项在JDK 8中已弃用,无需替换。

-Xrun libname

加载指定的调试/分析库。此选项已被该选项取代-agentlib

-XX:CMSIncrementalDutyCycle = 百分比

设置允许并发收集器运行的次要集合之间的时间百分比(0到100)。在弃用选项后,此选项在JDK 8中已弃用,没有替换-XX:+CMSIncrementalMode

-XX:CMSIncrementalDutyCycleMin = 百分比

设置次要集合之间的时间百分比(0到100),它-XX:+CMSIncrementalPacing是启用时占空比的下限。在弃用选项后,此选项在JDK 8中已弃用,没有替换-XX:+CMSIncrementalMode

-XX:+ CMSIncrementalMode

启用CMS收集器的增量模式。此选项在JDK 8中已弃用,没有替换,以及其他选项CMSIncremental

-XX:CMSIncrementalOffset = 百分比

设置增量模式占空比在次要集合之间的时间段内向右移动的时间百分比(0到100)。在弃用选项后,此选项在JDK 8中已弃用,没有替换-XX:+CMSIncrementalMode

-XX:+ CMSIncrementalPacing

根据JVM运行时收集的统计信息,启用增量模式占空比的自动调整。在弃用选项后,此选项在JDK 8中已弃用,没有替换-XX:+CMSIncrementalMode

-XX:CMSIncrementalSafetyFactor = 百分比

设置计算占空比时用于添加保守性的时间百分比(0到100)。在弃用选项后,此选项在JDK 8中已弃用,没有替换-XX:+CMSIncrementalMode

-XX:CMSInitiatingPermOccupancyFraction = 百分比

设置启动GC的永久生成占用率(0到100)的百分比。此选项在JDK 8中已弃用,无需替换。

-XX:MaxPermSize = size

设置最大永久生成空间大小(以字节为单位)。此选项在JDK 8中已弃用,并由该-XX:MaxMetaspaceSize选项取代。

-XX:PermSize = size

设置分配给永久生成的空间(以字节为单位),如果超出则会触发垃圾回收。此选项在JDK 8中已弃用,并被该-XX:MetaspaceSize选项取代。

-XX:+ UseSplitVerifier

允许拆分验证过程。默认情况下,此选项在先前版本中已启用,验证分为两个阶段:类型引用(由编译器执行)和类型检查(由JVM运行时执行)。此选项在JDK 8中已弃用,现在默认情况下会对验证进行拆分,而无法将其禁用。

-XX:+ UseStringCache

启用常用分配字符串的缓存。此选项已从JDK 8中删除,无需替换。文章来源地址https://www.toymoban.com/news/detail-772765.html

到了这里,关于【Java】JDK8 jvm参数配置及说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JDK8和JDK17安装切换,IDEA配置多个版本JDK

    JAVA之父高斯林推荐我们用JDK17,请尽快离开JDK8。JDK17 LTS在每个维度上都是一个巨大的飞跃: 在Java 17正式发布之前,Java开发框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3计划在2022年第四季度实现总体可用性的高端基线: Java 17+(来自 Spring Framework 5.3.x 线中的 Java 8-17)

    2023年04月27日
    浏览(54)
  • Kafka-配置Kerberos安全认证(JDK8、JDK11)

    一、相关配置 1、JAAS 配置文件 2、keytab 文件(kafka.service.keytab) 从 Kerberos 服务器上拷贝到目标机器 或 找运维人员要一份 3、Kerberos 配置文件(krb5.conf) krb5文件参数说明:krb5.conf(5) 从 Kerberos 服务器上拷贝到目标机器 或 找运维人员要一份 Tip: JDK11版本 sun.security.krb5.Config 类

    2024年02月15日
    浏览(46)
  • JDK8与JDK11:Java两个主要版本的比较

    在Java的世界里,JDK8和JDK11无疑是两个里程碑式的版本。它们在功能、性能和易用性上都进行了许多改进,使得Java开发者能够更高效、更轻松地开发出高质量的程序。在这篇文章中,我们将对这两个版本进行详细的比较,以帮助你更好地了解它们之间的差异。 1. 默认垃圾回收

    2024年03月10日
    浏览(73)
  • JDK8 和 JDK11 Java 两个主要版本的比较

    Java 是一门广泛应用于企业级应用和跨平台开发的编程语言。随着时间的推移,Java 不断演变和发展,版本之间有着许多新的功能和改进。本篇博客将重点关注 JDK 8 和 JDK 11 之间的区别,分析它们的新特性、性能改进和其他方面的差异。 一、性能改进: JDK 11 对性能进行了优化

    2024年02月09日
    浏览(36)
  • Mac下安装并配置jdk8环境

    JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 安装JDK后,会在电脑中同时安装:java的运行环境jre 和 开发环境jdk。 安装 JDK时,不建议安装太旧或太新的版本。目前的最新版本是jdk9。目前jdk8比较稳定,推荐开发时下载安装jdk8. 需要登陆oracle账号,国内下载较慢。(

    2024年02月20日
    浏览(55)
  • JDK8安装与配置环境变量,全图文

    JDK(Java Development Kit)是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JRE)和JAVA工具。没有JDK的话,无法编译Java程序(指java源码.java文件)。 http://www.oracle.com/technetwork/java/javase/downloads/inde

    2024年02月04日
    浏览(53)
  • Java jdk8生成随机数

    目录 Jdk8生成随机数 Jdk8以前 在Java 8中,可以使用ThreadLocalRandom类来生成随机数。相比于早期的Random类,ThreadLocalRandom类可以更好地支持多线程应用,性能也更优。下面是使用ThreadLocalRandom类生成随机数的几种方法: 生成一个0到n之间的随机整数(不包含n): 生成一个范围在

    2024年02月12日
    浏览(35)
  • MacBook苹果电脑安装JDK8、JDK11教程,配置环境变量 + 快速切换JDK版本

    https://www.oracle.com/java/technologies/downloads/archive/ 本文主要为在MacBook苹果电脑系统下安装JDK及环境变量配置。 本文分为四步: 在Oracle官网下载JDK 安装JDk 配置环境变量 快速切换 JDK8、JDK11和JDK21是Java开发工具包的不同版本,而JavaSE、JavaEE和JavaME是Java平台的不同配置和规范,用于

    2024年04月28日
    浏览(46)
  • 【Java基础】JDK8.0(JDK1.8)版本的下载与安装

    JDK(Java SE Development Kits)是Java程序员使用的开发环境,包含JRE和开发工具集。 JRE(Java Runtime Environment) :是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。 官网地址:https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html 链接:https://pan.baidu.com/

    2024年02月13日
    浏览(62)
  • 从JDK8到JDK14:阿里巴巴面试题探索Java的演进之路!

    嗨,各位小伙伴们!近期,阿里巴巴的面试题上线啦!话题聚焦在Java开发中最新的JDK特性。作为我们日常开发的利器,JDK的更新对于我们的工作有着极其重要的影响。今天,小米将带领大家一一揭秘JDK8至JDK14的新特性,让我们一起进入Java的新世界吧! JDK8的到来带来了Java开

    2024年04月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包