首页 > 编程语言 >JMC的秘密武器:如何获取并分析Java性能数据

JMC的秘密武器:如何获取并分析Java性能数据

时间:2024-09-03 16:24:14浏览次数:6  
标签:界面 秘密武器 录制 信息 Java 线程 JFR JMC

对于我们常用的 HotSpot 来说,有更强大的工具,那就是 JMC。 JMC 集成了一个非常好用的功能:JFR(Java Flight Recorder)。

Flight Recorder 源自飞机的黑盒子,是用来录制信息然后事后分析的。在 Java11 中,它可以通过 jcmd 命令进行录制,主要包括 configure、check、start、dump、stop 这五个命令,其执行顺序为,start — dump — stop,例如:

jcmd <pid> JFR.start
jcmd <pid> JFR.dump filename=recording.jfr
jcmd <pid> JFR.stop

JFR 功能是建在 JVM 内部的,不需要额外依赖,可以直接使用,它能够监测大量数据。比如,我们提到的锁竞争、延迟、阻塞等;甚至在 JVM 内部,比如 SafePoint、JIT 编译等,也能去分析。

JMC 集成了 JFR 的功能,下面介绍一下 JMC 的使用。

1.录制

下图是录制了一个 Tomcat 一分钟之后的结果,从左边的菜单栏即可进入相应的性能界面。

JMC 录制结果主界面

通过录制数据,可以清晰了解到某一分钟内,操作系统资源,以及 JVM 内部的性能数据情况。

2.线程

选择相应的线程,即可了解线程的执行情况,比如 Wait、Idle 、Block 等状态和时序。

以 C2 编译器线程为例,可以看到详细的热点类,以及方法内联后的代码大小。如下图所示,C2 此时正在疯狂运转。

JMC 录制结果 线程界面

3.内存

通过内存界面,可以看到每个时间段内内存的申请情况。在排查内存溢出、内存泄漏等情况时,这个功能非常有用。

JMC 录制结果 内存界面

4.锁

一些竞争非常严重的锁信息,以及一些死锁信息,都可以在锁信息界面中找到。

可以看到,一些锁的具体 ID,以及关联的线程信息,都可以进行联动分析。

JMC 录制结果 锁信息界面

5.文件和 Socket

文件和 Socket 界面能够监控对 I/O 的读写,界面一目了然。如果你的应用 I/O 操作比较繁重,比如日志打印比较多、网络读写频繁,就可以在这里监控到相应的信息,并能够和执行栈关联起来。

JMC 录制结果 文件和 Socket 界面

6.方法调用

这个和 jvisualvm 的功能类似,展示的是方法调用信息和排行。从这里可以看到一些高耗时方法和热点方法。

JMC 录制结果 方法调用

7.垃圾回收

如果垃圾回收过于频繁,就会影响应用的性能。JFR 对垃圾回收进行了详细的记录,比如什么时候发生了垃圾回收,用的什么垃圾回收器,每次垃圾回收的耗时,甚至是什么原因引起的等问题,都可以在这里看到。

JMC 录制结果 垃圾回收

8.JIT

JIT 编译后的代码,执行速度会特别快,但它需要一个编译过程。编译界面显示了详细的 JIT 编译过程信息,包括生成后的 CodeCache 大小、方法内联信息等。

JMC 录制结果 JIT 信息

9.TLAB

JVM 默认给每个线程开辟一个 buffer 区域,用来加速对象分配,这就是 TLAB(Thread Local Allocation Buffer)的概念。这个 buffer,就放在 Eden 区。

原理和 Java 语言中的 ThreadLocal 类似,能够避免对公共区的操作,可以减少一些锁竞争。如下图所示的界面,详细地显示了这个分配过程。

JMC 录制结果 TLAB 信息

在后面的课时中,我们会有多个使用此工具的分析案例。

标签:界面,秘密武器,录制,信息,Java,线程,JFR,JMC
From: https://blog.csdn.net/2401_86608273/article/details/141817384

相关文章

  • 【java入门】JDK的下载安装与配置,最新最详细教程!
    ......
  • Java毕设项目II基于Java的企业OA管理系统
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在当今快节奏的商务环境中,企业的高效运作......
  • Java毕设项目II基于Java的英语知识应用网站
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在数字化时代,英语作为国际交流的桥梁,其学......
  • Java面试——SpringBoot篇
    前置知识ApplicationContextInitializerApplicationContextInitializer是Spring框架中的一个扩展接口,用于在应用程序上下文(ApplicationContext)创建之前对其进行自定义初始化。通过实现该接口,您可以在应用程序上下文启动之前执行一些额外的配置或准备工作。应用场景动态加载......
  • JavaScript身份证真伪查验接口厂家有哪些?身份证查询真伪
    在当前数字化时代,身份证的真伪验证是一个十分重要的环节,尤其是在金融、电子政务、电子商务等行业的应用中,确保用户身份的真实性不仅有助于防范欺诈行为,还能提高服务的安全性和可靠性。翔云身份证实名认证api接口能够校验姓名与身份证号的一致性。权威数据源实时核验,保证......
  • java+vue计算机毕设校园图书馆座位预约系统的设计与实现【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高校招生规模的不断扩大,校园图书馆作为学生学习与科研的重要场所,其座位资源日益紧张,尤其在考试周及学期末等高峰期,座位供不应求的现象尤为突出。......
  • java+vue计算机毕设衣洗净管理系统的设计与实现【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着现代生活节奏的加快,人们对于生活品质的追求日益提升,特别是在日常衣物清洁护理方面,便捷、高效、个性化的服务需求日益增长。传统的洗衣店模式已难......
  • java+vue计算机毕设校园问卷信息调查管理系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今数字化、信息化的校园环境中,高效地收集、整理与分析学生、教职工及访客的意见与建议对于提升校园服务质量、优化教育资源配置具有重要意义。传......
  • java+vue计算机毕设游戏伙伴论坛网站【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,网络游戏已成为现代人休闲娱乐的重要方式之一。游戏产业的蓬勃兴起不仅推动了相关产业链的繁荣,也催生了对游戏交流平台的迫......
  • Jenkins启动报错java.lang.NullPointerException
    centos6.9下安装Jenkins,可以正常安装,但是启动后,Jenkins.log中发现报错java.lang.NullPointerException:Cannotloadfromshortarraybecause"sun.awt.FontConfiguration.head"isnullatjava.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:......