JVM调优最佳参数

news2024/11/15 11:04:43

项目背景

C端的项目,用户量比较多,请求比较多。

启动参数表

在这里插入图片描述在这里插入图片描述
Xmx指定应用程序可用的最大堆大小。
Xms指定应用程序可用的最小堆大小。

(一般情况下,需要设置Xmx和Xms为相等的值,且为一个固定的值)
如果该值设置过小,那么当内存不足,则会去操作系统中申请内存,整体进行一个扩容的话,可能会产生内存的抖动。如果产生内存抖动则会导致我们服务有一个停顿。所以我们的考虑是一步扩到位,那么有人可能会说这种方式可能会对空间做一些浪费。那么一般我们整个容器是布置一个单体应用。这种情况下,是用空间换时间的一种方式。

-XX:newSize 新生代初始化内存的大小(注意:该值需要小于-Xms的值)。
-XX:MaxnewSize 新生代可被分配的内存的最大上限(注意:该值需要小于-Xmx的值)。

-XX:MetaspaceSize和-XX:MaxMetaspaceSize设置元空间初始大小以及最大可分配大小。
JDK1.8之后,设置了元空间去存储我们类的各种各样的信息,他是用来保证我们元数据大小的初始化和最大可分配的大小。

如果说,不配置的话,他会一直往我们的内存去进行申请。内存有多大,最大的峰值就可能达到多大。最好还是需要一个配置,防止把我们整个机器的内存占用,导致我们整个机器内存不够的情况。

-Xss:设置栈内存的大小,设置的栈的大小决定了函数调用的最大深度。
Xss设置的大小决定了函数调用的深度,如果函数调用的深度大小设置的Xss大小,那么将会抛“java.lang.StackOverflowError”异常。

-XX:+UnlockExperimentalVMOptions:解锁实验参数。

-XX:+UseParNewGC: 新生代用parnew收集器

-XX:ParallelGCThreads:这个参数是指定并行GC线程的数量,一般最好和CPU核心数量相当。默认情况下,当CPU数量小于8,ParallelGCThreads的值等于CPU数量,当CPU数量大于8时,则使用公式:ParallelGCThreads=8+(N-8)*5/8)=3+((5引*CPU)/8);同时这个参数只要是并行GC都可以使用,不只是ParNew。

-XX:+UseConcMarkSweepGC:使用cms收集器。
JVM分为新生代和老年代,老年代使用是cms收集器。

-XX:+UseCMSCompactAtFullCollection XX:CMSFullGCsBeforeCompaction=1:
来配置在进行了Full GC时,对老年代进行压缩整理,处理掉内存碎片,其中CMSFuLlGCsBeforeCompaction配置进行了多少次Full GC之后执行一次内存压缩。

-XX:CMSInitiatingOccupancyFraction可以指定当老年代空间使用的值达到多少才进行一次CMS拉圾回收。

-XX:+UseCMSInitiatingOccupancyOnly:指定用设定的回收阚值(-XX:CMSInitiatingOccupancyFraction参数的值),如果不指定,JVM仅在第一次使用设定值,后续则会根据运行时采集的数据做自动调整,如果指定了该参数,那么每次JVM都会在到达规定设定值时进行GC。不过大多数情况下,JVM都能够作出更好的垃圾收集决策,所以如果不是很有信心的话,不建议使用该参数,放心的把决定权交给JVM。

-XX:MaxTenuringThreshold设置的是年龄阈值,默认15(对象被复制的次数)

-XX:+ExplicitGCInvokesConcurrent:System.gc0是正常FULL GC,会产生STW(Stop of Work)。打开此参数后,在做System…gc0时会做background模式CMS GC,即并行FULL GC,可提高FULL GC效率。

-XX:+CMSParallelRemarkEnabled:通过CMSScavengeBeforeRemark参数可以强制在重新标记阶段之前强制进行一次YoungGC,通过设置CMSParallelRemarkEnabled参数可以开启并行的Remark,加快remark的速度。

-XX:-OmitStackTracelnFastThrow:字面意思是省略异常栈信息从而快速拖出,那么JVM是如何做到快速抛出的呢?JVM对一些特定的异常类型做了Fast Throw优化,如果检测到在代码里某个位置连续多次地出同一类型异常的话,C2会决定用Fast Throw方式来地出异常,而异常Trace即详细的异常栈信息会被清空。这种异常抛出速度非常快,因为不需要在堆里分配内存,也不需要构造完整的异常栈信息。

参考资料:【经验分享】Jvm调优最佳参数(仅供参考)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIP之链路聚合、VRRP

链路聚合 链路聚合 --- 可以将多个物理接口绑定成一个逻辑接口,即将N条物理链路聚合为一条逻辑链路。可以在不升级硬件的条件下,达到增加带宽的效果 我们将逻辑链路,称为聚合链路,在华为设备中称为ETH-TRUNK链路(这个技…

Vue表单进阶操作

多选框另类使用场景 这个复选框和上面爱好那个复选框是不一样的,它不需要收集value值,只需要知道是否被选择,也就是ture或false,这时候就可以安装输入框的方式去写,直接去定义字符串,而不是数组 然后把全部…

“esp8266mod模块连接机智云Arduino实现pwm调节led的亮度“+_+

经过几天的漫长的探索和调试,终于连上机智云了。 历经的困难:esp8266总是连接机智云app超时,连接无反应,无数据。 1、机智云开发者中心,新建数据点,生成muc代码包,具体配置可以参考其他文章。…

go破冰之旅·5·常量、变量、数据类型

成体系的、快速学通Go,就在此时,持续连载! 上一篇: https://lan6193.blog.csdn.net/article/details/123454411https://lan6193.blog.csdn.net/article/details/123454411上文熟悉了Go的基础符号、基础规则,本文我们…

前端项目代码规范

一、变量与函数的命名(变量名和函数名是最好的注释) 通常情况下函数小陀峰、类名大陀峰、变量短横线/小陀峰、const全大写单词要表达出正确的语义,如:array类型或其它集合类型用英语复数格式、其它类型不要用复数格式区分函数为功…

async/await 在 C# 语言中是如何工作的?(下)

接《async/await 在 C# 语言中是如何工作的?(上)》、《async/await 在 C# 语言中是如何工作的?(中)》,今天我们继续介绍 SynchronizationContext 和 ConfigureAwait。 ▌SynchronizationContext…

【SVN已解决】修改svn服务端地址为ip或者域名地址的方法

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

Vue之指令详解与自定义指令

指令 想要了解自定义指令,那肯定得先明白什么是指令。 指令的本质:语法糖,标志位。在编译阶段 render 函数里,会把指令编译成 JavaScript 代码。 常见的Vue内置指令有: v-on 即 。v-on:click”function“&#xff…

Node【Express框架【二】】

文章目录 🌟前言🌟中间件🌟中间件函数🌟什么是中间件函数🌟中间件函数可以做什么 🌟Express中间件的类型🌟应用级中间件🌟路由器级中间件🌟错误处理中间件🌟内…

人为惨案之kube-controller-manager 不断重启根因溯源

文章目录 背景问题发现排查CSI provision排查kube-controller-manager查看controller log紧急恢复求助chatgpt 背景 2023年4月21日10:38:07,在集群中测试RBAC的时候,在kuboard的界面神出鬼没的删除了几个clusterRole。练习一个CKA的练习题目. Create a…

如何实现计算机上的文件共享

文件共享 第一步:设置无线热点第二步:设置本地用户权限第三步:设置共享文件夹第四步:打开自己的移动热点,并且让对方连接自己的热点第五步:让对方的电脑进行连接自己共享的文件 第一步:设置无线…

React-Redux详解

React-Redux详解 前言 React-Redux是一个用于在React应用中管理状态的第三方库。它是基于Redux架构的,提供了一种在React应用中高效管理状态的方式。React-Redux通过将Redux的核心概念和React组件相结合,使得在React应用中使用Redux变得更加简单和方便。…

从WebGL到Babylonjs

从WebGL到Babylonjs 一、关于WebGL 前世今生 OpenGL > OpenGL ES > WebGL本质:通过js代码去调用OpenGL的一系列Api 二、WebGL程序的构成 1、一个简单的webgl程序 const canvas document.querySelector(canvas); const gl canvas.getContext(webgl2); c…

llama.cpp一种在本地CPU上部署的量化模型(超低配推理llama)

0x00 背景 前不久,Meta前脚发布完开源大语言模型LLaMA, 随后就被网友“泄漏”,直接放了一个磁力链接下载链接。 然而那些手头没有顶级显卡的朋友们,就只能看看而已了 但是 Georgi Gerganov 开源了一个项目llama.cpp ggergano…

HBase高可用

一、HBase高可用简介 HBase集群如果只有一个master,一旦master出现故障,将导致整个集群无法使用,所以在实际的生产环境中,需要搭建HBase的高可用,也就是让HMaster高可用,也就是需要再选择一个或多个节点也…

【C语言】那些 “虾仁猪心“ 的坑题

本章介绍 最近翻笔记,整理了下那些日子里面掉过的坑题,说多都是泪!!也许是自己的储备知识不足,才造成的大坑,今天把题拿出来给大家溜溜,看大家做时候有没有踩坑! 文章目录 1:第一题2…

项目笔记-瑞吉外卖

文章目录 1.业务开发day011.软件开发整体介绍2.项目整体介绍:star:3.开发环境搭建4.登录功能:star4.1代码实现 5.退出功能6.页面效果出现 1.业务开发 day01 1.软件开发整体介绍 2.项目整体介绍⭐️ 后端:管理菜品和员工信息前台:通过手机端…

根据cadence设计图学习硬件知识 day03 了解 一些芯片 和 数据手册下载的地方

1. MT53D512M32D2DS 芯片(动态随机存取存储器)的技术指标 1.1 16n Prefetch (预加载) (n --芯片位宽) DDR 体系 链接:DDR扫盲—-关于Prefetch(预取)与Burst(突发)的深入讨论_ddr prefetch_qq_25814297-npl的博客-CSDN博客 1.2 每个通…

网络层重点协议之【IP协议】

0. IP地址组成 IP地址分为两个部分,网络号和主机号 网络号:标识网段,保证相互连接的两个网段具有不同的标识主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号 一…

浅谈: 计算机—JVM—线程

计算机存储模型(CPU、寄存器、高速缓存、内存、外存) 现代计算机系统CPU和内存之间其实是有一个cache的层级结构的。比内存速度更快的存储介质(SRAM),普通内存一般是DRAM,这种读写速度更快的介质充当CPU和内存之间的Cache,这就是缓存。当CPU…