JVM调优关注的核心指标?

ops/2025/3/16 1:02:56/

 

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用微信支付,扫码加群。由于维护成本问题得不到解决,可能将停止线上维护。

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html

有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。

最后再送一句:最好是学会了,而不是学废了!!

2

JVM 调优的核心指标是优化 Java 应用性能的关键,重点关注以下方面:


1. 内存相关指标

1.1 堆内存(Heap Memory)

  • 堆内存使用率:监控堆内存的使用情况,避免内存不足或浪费。

  • 年轻代(Young Generation)

    • Eden 区、Survivor 区的使用情况。

    • 年轻代 GC(Minor GC)的频率和耗时。

  • 老年代(Old Generation)

    • 老年代的使用情况。

    • 老年代 GC(Major GC/Full GC)的频率和耗时。

1.2 非堆内存(Non-Heap Memory)

  • 元空间(Metaspace)

    • 元空间的使用情况,避免类加载过多导致元空间溢出。

  • 直接内存(Direct Memory)

    • 直接内存的使用情况,避免 NIO 操作导致的内存泄漏。

1.3 内存溢出(OOM)

  • 监控是否发生 OutOfMemoryError,并分析堆内存快照(Heap Dump)。


2. 垃圾回收(GC)相关指标

2.1 GC 频率

  • 年轻代 GC(Minor GC)的频率。

  • 老年代 GC(Major GC/Full GC)的频率。

2.2 GC 耗时

  • 每次 GC 的耗时,尤其是 Full GC 的耗时。

  • GC 停顿时间(Stop-the-World Time)。

2.3 GC 吞吐量

  • GC 吞吐量 = (应用运行时间 / 总时间) × 100%。

  • 目标是尽量减少 GC 时间,提高应用运行时间。

2.4 GC 日志

  • 通过 GC 日志分析 GC 行为,定位性能瓶颈。


3. 线程相关指标

3.1 线程数量

  • 监控线程总数,避免线程过多导致上下文切换频繁。

3.2 线程状态

  • 监控线程的状态(RUNNABLE、BLOCKED、WAITING 等),定位锁竞争或资源等待问题。

3.3 死锁

  • 检测是否存在死锁线程。


4. CPU 相关指标

4.1 CPU 使用率

  • 监控 JVM 进程的 CPU 使用率,避免 CPU 过载。

4.2 高 CPU 线程

  • 定位占用 CPU 高的线程,分析其堆栈信息。


5. 类加载相关指标

5.1 类加载数量

  • 监控已加载类的数量,避免类加载过多导致元空间溢出。

5.2 类卸载数量

  • 监控已卸载类的数量,确保类加载器正常工作。


6. I/O 相关指标

6.1 文件 I/O

  • 监控文件读写操作,避免 I/O 成为性能瓶颈。

6.2 网络 I/O

  • 监控网络读写操作,避免网络延迟或阻塞。


7. 锁竞争相关指标

7.1 锁等待时间

  • 监控线程等待锁的时间,定位锁竞争问题。

7.2 锁持有时间

  • 监控线程持有锁的时间,避免锁粒度过大。


8. 响应时间和吞吐量

8.1 响应时间

  • 监控应用的响应时间,确保用户体验。

8.2 吞吐量

  • 监控应用的吞吐量(如每秒处理的请求数),确保系统性能。


9. 工具和监控

9.1 监控工具

  • JVisualVM:可视化监控 JVM 状态。

  • JConsole:监控 JVM 的内存、线程、类加载等。

  • Prometheus + Grafana:实时监控和可视化 JVM 指标。

  • Arthas:实时诊断和分析 JVM 问题。

9.2 日志分析

  • GC 日志:使用 GCViewer 或 GCEasy 分析 GC 行为。

  • 堆内存快照:使用 MAT(Memory Analyzer Tool)分析内存泄漏。


10. 调优目标

10.1 减少 GC 停顿时间

  • 选择合适的垃圾回收器(如 G1、ZGC)。

  • 调整年轻代和老年代的比例。

10.2 提高吞吐量

  • 增加堆内存大小。

  • 优化代码,减少对象创建和销毁的频率。

10.3 降低内存占用

  • 优化数据结构,减少内存浪费。

  • 及时释放不再使用的对象。

10.4 避免 OOM

  • 监控堆内存和元空间的使用情况。

  • 设置合理的堆内存大小和元空间大小。


11. 示例调优参数

以下是一个常见的 JVM 调优参数示例:

java -Xms512m -Xmx2048m \-XX:+UseG1GC -XX:MaxGCPauseMillis=200 \-Xloggc:/path/to/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps \-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump.hprof \-jar myapp.jar

12. 总结

JVM 调优需要关注以下核心指标:

  • 内存:堆内存、非堆内存、GC 行为。

  • 线程:线程数量、状态、死锁。

  • CPU:CPU 使用率、高 CPU 线程。

  • I/O:文件 I/O、网络 I/O。

  • 锁竞争:锁等待时间、锁持有时间。

  • 响应时间和吞吐量:确保应用性能。

通过合理配置 JVM 参数、监控关键指标和使用工具分析,可以显著提升 Java 应用的性能和稳定性。

3


http://www.ppmy.cn/ops/166078.html

相关文章

新疆美女演员吾热叶提正式加入创星演员出道计划,开启演艺事业新篇章

2月25日,演员吾热叶提正式加入“创星演员出道计划”,不仅得到参演都市爱情喜剧《和我结婚吧》角色的机会,还获得网剧《一念逍遥》的出演机会,自此开启全新影视之路。作为拥有无限潜力的演员,相信吾热叶提能凭借自身实力…

vue3 elementUi table自由渲染组件

文章目录 前言CustomTable如何使用tableColumn 属性h函数创建原生元素创建组件动态生成 前言 elementui中的table组件,表格中想要自由地渲染内容,是一种比较麻烦的事情,比如你表格中想要某一列插入一个button按钮,是不是要用插槽…

CSS元素层叠顺序规则

CSS元素层叠顺序规则 看图说话总结: background/borderz-index(<0)blockfloatinline/inline-blockz-index(0,auto)z-index (>0)

【CentOS】搭建Radius服务器

目录 背景简介&#xff1a;Radius是什么&#xff1f;Radius服务器验证原理搭建Radius服务器环境信息yum在线安装配置FreeRADIUS相关文件clients.conf文件users文件重启服务 验证 参考链接 背景 在项目中需要用到Radius服务器作为数据库代理用户的外部验证服务器&#xff0c;做…

基于微信小程序的小区管理系统设计与实现【lw+源码+部署+视频+讲解】

第1章 绪论 1.1 研究背景 互联网时代不仅仅是通过各种各样的电脑进行网络连接的时代&#xff0c;也包含了移动终端连接互联网进行复杂处理的一些事情。传统的互联网时代一般泛指就是PC端&#xff0c;也就是电脑互联网时代&#xff0c;但是最近几十年&#xff0c;是移动互联网…

数据挖掘导论——第二章:数据

谈数据之前&#xff0c;我们要先知道数据有哪几种类型。数据的维度&#xff0c;数据的频率、位置、分布&#xff08;方差或标准差衡量&#xff09;等。 接着就是数据的质量&#xff0c;数据挖掘着眼于要么是对数据质量问题的检测和纠正&#xff0c;要么是使用可以容忍低质量数…

c#使用redis如何实现数据的分库存储

在 C# 中使用 Redis 实现数据的分库存储,可以通过以下几种方案实现。以下详细说明并提供代码示例: 方案 1:Redis 多数据库索引(逻辑分库) Redis 默认支持 0-15 共 16 个逻辑数据库,通过索引切换。适用于简单场景。 步骤 连接时指定数据库索引: using StackExchange.Re…

PGSQL基本使用

PGSQL基本使用 文章目录 PGSQL基本使用日期转换长度不够补数获取上下行取连续的开始和结束的值 日期转换 格式说明YYYY年MM月DD日hh2424小时制mi分钟ss秒 -- 日期字符串转指定日期字符串 -- 20250101123000 转为 2025-01-01 12:30:00 select to_char(to_timestamp(2025010112…