JVM内存调优常用参数

视频讲解地址

文章目录

  • 一、开始
  • 二、常用命令
    • 1、原生命令
    • 2、arthas命令
  • 三、Parallel
  • 四、G1 相关参数
  • 五、通用参数
  • 六、JVM调优参数


一、开始


查看当前JDK版本所支持的垃圾回收器有哪些、以及默认使用的回收器

java -XX:+PrintFlagsFinal -version | grep -E '\<Use.*GC\>'

JDK8和JDK11运行上述命令结果如下:

在这里插入图片描述


各种组合GC的开关

名称描述
UseSerialGC年轻代和老年代都用串行收集器
UseParNewGC年轻代使用ParNew,老年代使用 Serial Old
UseParallelGC年轻代使用Paraller Scavenge,老年代使用Serial Old
UseParallelOldGC新生代Paraller Scavenge,老年代使用Paraller Old
UseConcMarkSweepGC表示年轻代使用ParNew,老年代的用CMS + Serial Old
UseG1GC使用G1垃圾回收器

  1. JDK8 默认是 Paraller Scavenge + Paraller Old ,JDK11默认是 G1 (其实JDK9开始默认是G1)。
  2. 在JDK11里面没有看到 ParNew,是因为 ParNew+Serial Old 这个组合已经不存在了。

注:

  1. 垃圾回收器和JDK的版本是有关系的,但目前主流的版本是8和11,所以此次学习也是用这两个版本
  2. 8和11默认的回收器分别是UseParallelGC和G1,既如此我们就深入理解它们
  3. 理解垃圾回收器无非是理论+各种参数,理论上篇已经解释了,此次就来看看这两款收集器的核心配置参数

二、常用命令


1、原生命令


注:pid 可以使用 jps/jcmd 查看

命令描述结果
jcmd pid VM.flags查看当前JVM参数在这里插入图片描述
jmap -heap pid查看当前堆信息(JDK11用不了)在这里插入图片描述
jcmd pid GC.heap_info查看各个区域内存使用情况,可以看Metaspace、和class space在这里插入图片描述
jstat -gc pid查看内存使用情况、且可以看到GC频率在这里插入图片描述

注: jstat -gc 结果描述

- `S0C`: 第一个幸存区(Survivor 0)的容量(Capacity)。
- `S1C`: 第二个幸存区(Survivor 1)的容量。
- `S0U`: 第一个幸存区的使用量(Used)。
- `S1U`: 第二个幸存区的使用量。
- `EC`: Eden 区的容量。
- `EU`: Eden 区的使用量。
- `OC`: 老年代的容量。
- `OU`: 老年代的使用量。
- `MC`: 元空间(Metaspace)的容量。
- `MU`: 元空间的使用量。
- `CCSC`: 压缩类空间的容量。
- `CCSU`: 压缩类空间的使用量。
- `YGC`: 年轻代垃圾回收的次数。
- `YGCT`: 年轻代垃圾回收的总时间。
- `FGC`: 老年代垃圾回收的次数。
- `FGCT`: 老年代垃圾回收的总时间。
- `CGC`: 全局垃圾回收的次数。
- `CGCT`: 全局垃圾回收的总时间。
- `GCT`: 所有垃圾回收的总时间。

2、arthas命令

命令描述图视
memory查看内存使用情况在这里插入图片描述

想了解arthas的小伙伴可以看这个: java线上问题排查工具——Arthas


三、Parallel


查看某个参数的值:jinfo -flag ParallelGCThreads pid

参数描述
ParallelGCThreads设置用于垃圾回收的线程数,通常设置为处理器数量的几倍。
MaxGCPauseMillis设置期望的最大垃圾收集停顿时间,Parallel GC会尝试调整各种参数以满足这个目标。
GCTimeRatio设置垃圾收集时间占总时间的比例。值为n,表示垃圾收集时间占总时间的1/(1+n)。比如19表示垃圾收集时间占总时间的1/20。
UseAdaptiveSizePolicy当这个参数激活后,就不需要人工指定新生代的大小、Eden和Survivor区的比例、晋升老年代对象的大小,虚拟机会动态的调整。

四、G1 相关参数


查看某个参数的值:jinfo -flag G1HeapRegionSize pid

参数描述备注
G1HeapRegionSize设置Region大小,并非最终值,会按照实际空间来看
MaxGCPauseMillis设置G1收集过程目标时间,默认 200ms
G1NewSizePercent新生代最小值在我这个版本JDK没有这个参数
G1MaxNewSizePercent新生代最大值,默认值60%在我这个版本JDK没有这个参数
ParallelGCThreadsSTW期间,并行GC线程数
ConcGCThreads并发标记阶段,并行执行的线程数
InitiatingHeapOccupancyPercent设置触发标记周期的 Java 堆占用率阈值。默认值是45%。这里的java堆占比指的是non_young_capacity_bytes,包括old+humongous

在这里插入图片描述


五、通用参数


参数描述
Xmx设置JVM的最大堆内存大小。
Xms设置JVM的初始堆内存大小。
Xmn设置新生代的大小。新生代包含Eden区和两个Survivor区
Xss设置每个线程的堆栈大小。
SurvivorRatio设置Eden区与Survivor区的大小比例。
MaxPermSize / MaxMetaspaceSize设置永久代(PermGen)或元空间(Metaspace)的最大大小。

六、JVM调优参数


所谓的JVM调优,就是为了保证我们系统的稳定运行

  1. 设置各个内存区域的大小和占比【五】
  2. 选定合适的垃圾回收器(基本都是用默认的)
  3. 当前系统关注的是快速回收还是吞吐量,基于此去设置 Parallel 和 G1的相关参数

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

类和对象(2)之类的6个默认成员函数(2)

上次我们梳理了初始化和清理的知识点&#xff0c;今天我们要梳理的是拷贝赋值的知识点。 拷贝构造函数 看到拷贝构造函数这个名字就能看的出来它是一个构造函数&#xff0c;所以它的语法和构造函数很相似。 既然他是一个构造函数&#xff0c;那么他就具有构造函数的语法&…

前端颜料盘??

前端颜料盘&#xff1f;&#xff1f; 一、原生颜料盘 <input type"color" placeholder"选择颜色">二、第三方开源库 Pickr&#xff1a; GitHub: https://github.com/Simonwep/pickr官方网站: https://simonwep.github.io/pickr/Pickr 是一个轻量级…

Windows Server 2003 Web服务器搭建

系列文章目录 目录 系列文章目录 前言 一、Web服务器是什么&#xff1f; 二、配置服务器 1.实验环境搭建 2.服务器搭建 1)控制面板中找到增加或删除程序打开 2)点击增加程序 3)安装Web服务器 4)查看安装是否成功 5)打开Internet信息服务(IIS)管理器,进行配置 6)找…

Java 字符串 07 练习-手机号屏蔽、身份证号信息查看,游戏骂人敏感词替换

注意点&#xff1a;只有返回值才是被截取的小串&#xff0c;所以需要有一个变量去承接它&#xff1b; 自己写的代码&#xff1a; import java.util.Scanner; public class practice {public static void main(String[] args) {Scanner input new Scanner(System.in);String …

离散数学4

谓词公式与量词的辖域 谓词逻辑中量词的符号化 例3&#xff0c;没有人不犯错误&#xff0c;可以理解为&#xff0c;有人不犯错误&#xff0c;用存在量词&#xff0c;因为用的是存在量词&#xff0c;就用合取 可以分步理解&#xff0c; 所有大学生都喜欢歌星&#xff1a; 所有…

HTML实战

HTML实战 标题 标题排版 img标签路径书写的两种方式&#xff1a; 绝对路径 绝对磁盘路径&#xff1a;C:\User…绝对网络路径&#xff1a;https://i2.sinaimg.cn/dy/deco/2012/0613/yocc20120613img01/news_logo.png 相对路径 ./ : 当前目录 ../ &#xff1a; 上一级目录宽…

ARL灯塔vps云服务器安装

前提是vps服务器已经安装好docker 1、下载压缩包到本地 2、解除不能扫描edu等域名的限制 解压docker_arl.zip&#xff0c;打开docker_arl/config-docker.yaml文件 删除掉edu.cn等限制域名(图中已删除) 3、上传至vps云服务器 将docker_arl文件上传到云服务器opt目录下 这里我…

仅使用 Python 创建的 Web 应用程序(前端版本)第08章_商品详细

在本章中,我们将实现一个产品详细信息页面。 完成后的图像如下。 Model、MockDB、Service都是在产品列表页实现的,所以创建步骤如下。 No分类内容1Page定义PageId并创建继承自BasePage的页面类2Application将页面 ID 和页面类对添加到 MultiPageApp 的页面中Page:定义PageI…

12种相关系数汇总,别再以为只有皮尔逊了!

所谓相关关系是指2个或2个以上变量取值之间在某种意义下所存在的规律&#xff0c;其目的在于探索数据集所存在隐藏的关系网&#xff0c;在19世纪80年代&#xff0c;Galton通过研究人类身高遗传问题首次提出了相关的概念&#xff0c;文中指出相关关系可以定义为&#xff1a;一个…

PGsql 解析json及json数组

创建测试数据 drop table if exists json_test; create table json_test as select 111 as id, {"nodes":{"1692328028076":{"nodeId":"1692328028076","nodeName":"测试表1","nodeType":"DATACO…

报错“MySql配置文件已损坏,请联系技术支持”的解决方法

目录 第一步 打开控制面板&#xff0c;选择管理工具&#xff0c;再选择事件查看器 第二步 在【应用程序】里找到这条报错&#xff0c;记下来文件内容。我自己的来源是“MsiInstaller” 第三步 winR组合键&#xff0c;输入regedit打开注册表 第四步 根据前面报错的文件名定位…

【网页设计期末】咖啡商城网页代码

本文资源&#xff1a;咖啡商城网页代码htmlCSSJavaScript_前端-CSDN问答 1.题目要求 用HTMLCSSJavaScript创建网站项目 说明:制作首页、登录页、列表页。要求: 1、首页页面结构:logo&#xff0c;导航&#xff0c;轮播&#xff0c;商品列表(九宫格结构&#xff0c; 每一格均含图…

如何过有「松弛感」的生活?

最近网上有一个词很流行&#xff0c;叫做「松弛感」。最早的出处似乎是这么一条微博&#xff1a;博主见到一家人出门旅游&#xff0c;行李全部被退回&#xff0c;空手抵达目的地&#xff0c;竟然没人紧张和生气&#xff0c;而是重新安排好行李后继续开心聊天&#xff0c;全程非…

Vue3使用setup-extend简化组件名写法

如果我们在Vue3中要使用setup的语法糖&#xff0c;就需要使用两个script标签&#xff0c;一个用于设置组件的name属性&#xff0c;一个用于编写setup中的代码。如下&#xff1a; 但是我们有觉得光是因为一个name属性就多写一个script标签有点麻烦了。 因此我们可以使用插件来进…

会话技术复习笔记

一.登录校验的需求 什么是登录校验&#xff1f; 所谓登录校验&#xff0c;指的是我们在服务器端接收到浏览器发送过来的请求之后&#xff0c;首先我们要对请求进行校验。先要校验一下用户登录了没有&#xff0c;如果用户已经登录了&#xff0c;就直接执行对应的业务操作就可以…

iOS 面试 Swift基础题

一、Swift 存储属性和计算属性比较&#xff1a; 存储型属性:用于存储一个常量或者变量 计算型属性: 计算性属性不直接存储值,而是用 get / set 来取值 和 赋值,可以操作其他属性的变化. 计算属性可以用于类、结构体和枚举&#xff0c;存储属性只能用于类和结构体。存储属性可…

爬虫学习笔记-get请求获取豆瓣电影排名多页数据★★★★★

1. 导入爬虫需要使用的包 import urllib.request import urllib.parse 2.创建请求函数 def create_request(page): # 定义不变的url部分 base_url https://movie.douban.com/j/chart/top_list?type5&interval_id100%3A90&action& # 根据规律定义data拼接url …

倒排索引的构建与查询

倒排索引是信息检索的重要技术&#xff0c;本文将基于中文短信数据&#xff08;数据集可在本文所附资源处下载或点击此处链接下载&#xff09;&#xff0c;编程构建倒排索引并实现布尔查询。 1. 功能设计 用户输入查询&#xff0c;按下回车键&#xff0c;如果该查询作为单独的…

宏景eHR FrCodeAddTreeServlet SQL注入漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

微信小程序|摇骰子

目录 简介设计与功能需求确定用户界面设计确定摇骰子动画效果确定随机数生成算法编码实现实现摇骰子动画测试与优化进行功能测试进行性能测试说明简介 制作一个摇骰子小程序是一个有趣且具有挑战性的项目。通过这个项目,你可以学习如何运用编程技术来模拟骰子的摇动和结果显示…