JVM 参数配置规范

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

废话不说,直接上干货!!!

JVM 规范:

参数 备注/参数释义 交易规范
JVM版本 1.8.0_60以下,无法使用Pfinder 1.8.0_131之前,jvm无法感知docker的真实核数和内存大小,而是使用的宿主机的核数和内存 必须1.8.0_60以上 推荐1.8.0_191以上
JVM GC方法 ParallelGC:1.8默认,高吞吐量,响应时间不敏感 CMS:响应优先,堆内存8G以下优先选择 G1:响应优先,堆内存8G及以上选择 C端应用:8G及以上选择G1,8G以下选择CMS B端应用:推荐使用ParallelGC
Xmx 堆的最大值 必须配置 小于8G的,不超过50% 8G的,最多可以设置6G 12G的,最多设置为8G 16G的,最多设置为12G 32G的,最多设置为24G
Xms 初始堆的大小,也是堆大小的最小值 必须配置 与Xmx一致
MaxDirectMemorySize 堆外内存大小 一般无需配置 使用了OHC等堆外缓存的需要配置,配置时需与架构师评审并压测
ParallelGCThreads 并行GC时的线程数(ParallelGC、CMS、G1均适用) 此值过小,则stw时间变长,此值过大,影响吞吐量,CPU过高 必须配置 =容器核数
ConcGCThreads 并发标记时的线程数 并发标记时并没有stw,CPU密集型任务(CMS、G1才有并发标记步骤) 限CMS、G1必须配置 ParallelGCThreads的20%~50% 一般为ParallelGCThreads/4或ParallelGCThreads/2
CICompilerCount JIT进行热点编译的线程数 CPU密集型任务 必须配置(值要大于2) 推荐值如下: 1C容器 : 2 2C容器:2 4C容器 : 2~4 8C容器:2~4 16C容器 : 4~12
MetaspaceSize MaxMetaspaceSize 元空间初始大小、元空间最大大小 如果未指定初始大小,默认是20m,应用启动时如果不够就会gc来扩容 元空间并不在虚拟机中,而是使用本机内存,因此受本机内存限制 jdk1.8适用,必须配置 需要大于256M
Xmn NewRatio Xmn:新生代内存大小 NewRatio:老年代与新生代与内存容量的比例 x:1 这2个参数只需设置其中1个即可,若都设置了,以Xmn为准 CMS必须设置,只需配置其中1个参数;G1不要设置 Xmn=堆内存Xmx的 1/3 NewRatio=2
UseCMSInitiatingOccupancyOnly CMSInitiatingOccupancyFraction=x CMSInitiatingOccupancyFraction为堆内存占用率达到百分比时开始GC的阈值 默认不设置时,由JVM自动计算垃圾回收的周期 CMS必须设置 推荐值70~80
UseCMSCompactAtFullCollection CMSFullGCsBeforeCompaction=x CMSFullGCsBeforeCompaction为配置fullGC时,进行了多少次fullGC之后对老年代进行压缩整理处理碎片 CMS专用,不强制 推荐值1
HeapDumpOnOutOfMemoryError HeapDumpPath=/export/Logs/ 首次遭遇OOM时导出此时堆中相关信息 路径带“/”则为目录,否则为文件 必须配置 文件目录需要为已存在的目录,若配置为具体文件,其所属目录也需要为已存在的目录

JVM配置示例

以下为交易应用容器规格分布和JVM参考配置:文章来源地址https://www.toymoban.com/news/detail-563967.html

序号 容器规格 容器数量 JVM配置样例
1 8C16G 43378 使用G1: export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms8192m -Xmx8192m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:ParallelGCThreads=8 -XX:ConcGCThreads=4 -XX:CICompilerCount=4 -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/"
2 4C8G 25506 使用G1: export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms4096m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 -XX:CICompilerCount=2 -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/" 使用CMS: export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms4096m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxDirectMemorySize=512m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:NewRatio=2 -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 -XX:CICompilerCount=2 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/" 使用ParallelGC(1.8默认): export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms4096m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:ParallelGCThreads=4 -XX:CICompilerCount=2 -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/"
3 16C32G 24735 使用G1(该应用使用了OHC堆外缓存,故配置了堆外内存大小): export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms20480m -Xmx20480m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:ParallelGCThreads=16 -XX:ConcGCThreads=8 -XX:CICompilerCount=8 -XX:G1HeapRegionSize=8m -XX:MaxDirectMemorySize=8192m -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/"
4 8C12G 15690 建议置换为8C16容器,参考8C16G的配置,注意按规范控制Xmx的大小
5 16C16G 10908 使用G1: export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms8192m -Xmx8192m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:ParallelGCThreads=16 -XX:ConcGCThreads=8 -XX:CICompilerCount=8 -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/"

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

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

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

相关文章

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

    -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 注意:

    2024年02月03日
    浏览(53)
  • JVM堆内存及参数配置 -Xss -Xms -Xmx -Xmn

    目录 一 JVM堆内存划分 二 参数设置 逻辑上:新生代、老年代、永久代  物理上:新生代、 老年代 JDK1.7之前,有永久代,但已经逐步“去永久代” JDK1.8之后,无永久代,由元空间替代 java堆从GC的角度,可以细分为: 新生代(Eden区、From Survivor区、To Survivor区) 老年代 1、新

    2024年02月05日
    浏览(40)
  • TOMCAT部署及优化(Tomcat配置文件参数优化,Java虚拟机(JVM)调优)

    TOMCAT tomcat :是一个开放源代码的web应用服务器,基于java代码开发的。也可以理解为tomacat就是处理动态请求和基于java代码的页面开发。可以在html当中写入java代码,tomcat可以解析html页面当中的java,执行动态请求,动态页面。 tomcat是机制存在一些问题,如果不对tomcat进行优化

    2024年02月13日
    浏览(34)
  • 【Java可执行命令】(十七)JVM运行时信息动态维护工具 jinfo:一个维护 JVM 相关的配置参数和系统属性的工具,辅助故障排除、诊断和优化 ~

    jinfo 是 Java Development Kit (JDK) 自带的一款命令行工具。它旨在为用户提供进程的运行时信息,特别是与 Java 虚拟机 (JVM) 相关的配置和系统属性。 jinfo 使得用户可以轻松地查看和修改正在运行的 Java 进程的参数,以便进行 故障排除、诊断和优化 。 jinfo 允许用户动态查询和修改

    2024年02月13日
    浏览(51)
  • 一、认识 JVM 规范(JVM 概述、字节码指令集、Class文件解析、ASM)

    JVM : Java Virtual Machine ,也就是 Java 虚拟机 所谓虚拟机是指:通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。 即:虚拟机是一个计算机系统。这种计算机系统运行在完全隔离的环境中,且它的硬件系统功能是通过软件模拟出来的。 JVM 通

    2024年01月23日
    浏览(54)
  • [Java SE] 彻底搞懂Java程序的三大参数配置途径:系统变量与JVM参数(VM Option)/环境变量/启动程序参数args

    一次没搞懂,处处受影响。这个问题属于基础问题,但又经常踩坑,不得不重视一下了。 IDEA中的配置位置 参数 使用方式 示例 代码获取方式 系统属性 由操作系统、JVM、应用程序主动设置 System.setProperties(Properties propes) / System.setProperties(String key,String value) / System.getProperties(

    2024年02月08日
    浏览(42)
  • JVM——JVM参数指南

    在本篇文章中,你将掌握最常用的 JVM 参数配置。如果对于下面提到了一些概念比如堆、 Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。 此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里

    2024年02月12日
    浏览(41)
  • JVM 17 调优指南:如何进行JVM调优,JVM调优参数

    在这篇文章中,我会详细介绍JVM调优的概念、重要性和具体的JVM调优参数。此外,我将提供12个实用的代码示例,每个示例都会包含JVM调优参数和相应的Java代码。 本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享 JVM调优是调整

    2024年02月02日
    浏览(49)
  • JVM 8 调优指南:如何进行JVM调优,JVM调优参数

    这篇文章将详细介绍如何进行JVM 8调优,包括JVM 8调优参数及其应用。此外,我将提供12个实用的代码示例,每个示例都会结合JVM启动参数和Java代码。 本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享 JVM调优是指通过调整Java虚拟

    2024年01月21日
    浏览(57)
  • JVM 11 调优指南:如何进行JVM调优,JVM调优参数

    JVM 11的优化指南:如何进行JVM调优,以及JVM调优参数有哪些”这篇文章将包含JVM 11调优的核心概念、重要性、调优参数,并提供12个实用的代码示例,每个示例都会结合JVM调优参数和Java代码 本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,

    2024年01月16日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包