当前位置: 首页 > news >正文

性能问题排查工具介绍

欢迎关注专栏:性能测试和优化

排查工具介绍

JVM工具

jstack

jstack 命令可以生成 JVM 当前时刻的线程快照,包括线程的调用栈、状态等,常用于分析线程状态、排查死锁、线程阻塞、CPU 占用高等问题。

基本命令如下:

jstack 进程ID

输出如下:

在这里插入图片描述

jstat

jstat 命令允许以固定的监控频次输出 JVM 的资源使用情况,常用于分析垃圾回收情况、排查内存泄漏等问题。

基本命令如下:

jstat -gcutil -h10 <PID> 1000  # 每1秒输出一次GC统计,每10行显示表头

输出如下:

➜  ~ jstat -gcutil 23940 5000 100
  S0    S1      E       O      M     CCS   YGC     YGCT  FGC    FGCT   CGC   CGCT      GCT
  0.00 100.00  0.36  87.63  94.30  81.06   539   14.021   33   3.972   837  0.976   18.968
  0.00 100.00  0.60  69.51  94.30  81.06   540   14.029   33   3.972   839  0.978   18.979
  0.00   0.00  0.50  99.81  94.27  81.03   548   14.143   34   4.002   840  0.981   19.126
  0.00 100.00  0.59  70.47  94.27  81.03   549   14.177   34   4.002   844  0.985   19.164
  0.00 100.00  0.57  99.85  94.32  81.09   550   14.204   34   4.002   845  0.990   19.196
  0.00 100.00  0.65  77.69  94.32  81.09   559   14.469   36   4.198   847  0.993   19.659
  0.00 100.00  0.65  77.69  94.32  81.09   559   14.469   36   4.198   847  0.993   19.659
  0.00 100.00  0.70  35.54  94.32  81.09   567   14.763   37   4.378   853  1.001   20.142
  0.00 100.00  0.70  41.22  94.32  81.09   567   14.763   37   4.378   853  1.001   20.142
  0.00 100.00  1.89  96.76  94.32  81.09   574   14.943   38   4.487   859  1.007   20.438
  0.00 100.00  1.39  39.20  94.32  81.09   575   14.946   38   4.487   861  1.010   20.442
  • S0/S1:Survivor区使用率(0~100%)
  • E:Eden区使用率
  • O:老年代使用率
  • M:元空间使用率
  • YGC/YGCT:Young GC次数/耗时
  • FGC/FGCT:Full GC次数/耗时

jmap

jmap 命令可以生成堆转储快照,常用于分析JVM的垃圾收集器行为、排查堆内存溢出等问题。

生成堆转储文件的命令

jmap -dump:format=b,file=heap_dump.hprof <PID>

分析堆转储

  • 使用 MAT 打开 heap_dump.hprof
  • 查找 Histogram 中对象数量异常的类。

Jconsole

JConsole 是一个基于JMX的GUI工具,用于连接正在运行的JVM,提供强大的可视化界面,允许实时查看堆内存、线程、类加载、MBean等。

查看堆内存使用情况

在这里插入图片描述

查看线程情况

在这里插入图片描述

查看MBean

在这里插入图片描述

VisualVM

VisualVM 是一个集成多个JDK命令行工具的可视化工具,可以作为Java应用程序性能分析和运行监控的工具。开发人员可以利用它来监控、分析线程信息,浏览内存堆数据。

查看堆内存使用情况

企业微信截图_da02651a-cc27-4ce7-9cc0-4862cc1f6ae1

查看线程情况

企业微信截图_675af627-58bf-4644-a883-6394ef00213d

工具对比与选型建议

工具核心功能适用场景操作系统
jstack线程快照、死锁检测线程阻塞、死锁排查Windows/Linux
jstatGC统计、内存分区监控GC调优、内存泄漏初筛Windows/Linux
jmap堆转储生成OOM问题分析Windows/Linux
JConsole图形化综合监控实时运行时状态监控Windows/Linux
VisualVM图形化综合监控实时运行时状态监控Windows/Linux

相关文章:

  • 移动应用开发实验室2024二面纳新题复盘
  • 【家政平台开发(20)】系统监控与日志管理设计:稳固运行的基石
  • 【内网安全】DHCP 饿死攻击和防护
  • [特殊字符] 驱动开发硬核特训 · Day 4
  • Vue3响应式引擎解密:从依赖追踪到性能调优的深度之旅
  • 微服务系统记录
  • Java 数组与 ArrayList 核心区别解析:从源码到实战!!!
  • 远距离无线网络传输设备-网桥(1/5/15 km)
  • C++Primer - 动态内存管理
  • 优选算法的妙思之流:分治——归并专题
  • 静态库与动态库
  • 整理一些大模型部署相关的知识
  • 对责任链模式的理解
  • 7.4 SVD 的几何背景
  • JCR一区文章,壮丽细尾鹩莺算法Superb Fairy-wren Optimization-附Matlab免费代码
  • 介质访问控制——信道划分
  • from fastmcp import FastMCP和from mcp.server.fastmcp import FastMCP的区别是什么?
  • C51单片机学习笔记——LCD1602调试
  • SEO长尾关键词优化策略
  • 语法: value=kbhit( );和 value=kbhit( stream );
  • 网站做跳转会有什么影响/百度统计数据分析
  • 长沙网站开发流程/网站优化排名哪家好
  • 李鸿星电子商务网站建设/网络广告的特点
  • 上海动易 网站/深圳网络营销渠道
  • 建设一个网站需要提供什么手续/免费获客软件
  • 公司网站备案需要什么/成都疫情最新消息