性能问题排查工具介绍 原创

兮动人
发布于 2025-4-8 13:21
浏览
0收藏

Table of Contents

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

排查工具介绍

JVM工具

<a id=“jstack”>jstack</a>

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

基本命令如下:

jstack 进程ID
  • 1.

输出如下:

性能问题排查工具介绍-鸿蒙开发者社区

jstat

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

基本命令如下:

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

输出如下:

➜  ~ 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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 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>
  • 1.

分析堆转储

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

Jconsole

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

查看堆内存使用情况

性能问题排查工具介绍-鸿蒙开发者社区

查看线程情况

性能问题排查工具介绍-鸿蒙开发者社区

查看MBean

性能问题排查工具介绍-鸿蒙开发者社区

VisualVM

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

查看堆内存使用情况

性能问题排查工具介绍-鸿蒙开发者社区

查看线程情况

性能问题排查工具介绍-鸿蒙开发者社区

工具对比与选型建议

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

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2025-4-8 13:24:03修改
收藏
回复
举报


回复
    相关推荐