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

JVM监控工具

以下是JVM监控工具的分类、优缺点及使用方法的详细总结:


一、JVM自带工具

1. 命令行工具
  • jps (Java Process Status)

    • 用途:查看当前用户的Java进程ID及主类名。

    • 优点:轻量级,快速定位进程。

    • 缺点:功能单一。

    • 命令

      jps -l  # 显示进程ID和完整主类名
      jps -v  # 显示JVM启动参数
  • jstat (JVM Statistics Monitoring Tool)

    • 用途:监控类加载、GC、JIT编译等状态。

    • 优点:实时监控,无侵入。

    • 缺点:输出为文本,需手动解析。

    • 命令

      
      jstat -gcutil <pid> 1000  # 每1秒输出一次GC统计
      jstat -class <pid>        # 类加载/卸载情况
  • jstack (Java Stack Trace)

    • 用途:生成线程快照,分析死锁或线程阻塞。

    • 优点:快速获取线程信息。

    • 缺点:需手动触发。

    • 命令

      jstack <pid> > thread_dump.txt
  • jmap (Java Memory Map)

    • 用途:生成堆转储(Heap Dump),或查看堆内存分布。

    • 优点:直接获取内存详情。

    • 缺点:生成堆转储可能导致应用暂停。

    • 命令

      jmap -heap <pid>          # 显示堆内存摘要
      jmap -dump:format=b,file=heap.hprof <pid>  # 生成堆转储
  • jinfo (Java Configuration Info)

    • 用途:查看或动态修改JVM参数。

    • 优点:支持运行时调整部分参数。

    • 缺点:功能有限。

    • 命令

      jinfo <pid>               # 显示所有JVM参数
      jinfo -flag +PrintGCDetails <pid>  # 动态启用GC日志
  • jcmd (Java Command)

    • 用途:多功能工具,支持生成堆转储、线程快照等。

    • 优点:集成多个工具功能。

    • 缺点:命令复杂。

    • 命令

      jcmd <pid> VM.flags       # 查看JVM参数
      jcmd <pid> GC.heap_dump heap.hprof  # 生成堆转储
       

2. 图形化工具
  • JConsole

    • 用途:监控堆、线程、类、MBean等。

    • 优点:界面简单,无需安装。

    • 缺点:功能较基础,高负载时可能影响性能。

    • 启动命令

      jconsole
  • VisualVM

    • 用途:集成监控、线程分析、堆转储分析、Profiling。

    • 优点:功能全面,支持插件扩展(如Visual GC)。

    • 缺点:JDK 9+需单独下载。

    • 启动命令

      jvisualvm
  • Java Mission Control (JMC)

    • 用途:低开销的性能分析,支持飞行记录器(Flight Recorder)。

    • 优点:生产环境友好,提供详细事件记录。

    • 缺点:部分高级功能需商业许可。

    • 启动命令

      jmc


二、第三方工具

1. 开源工具
  • Arthas

    • 用途:在线诊断,支持动态跟踪方法调用、热修复。

    • 优点:无需重启,功能强大。

    • 缺点:需熟悉命令行操作。

    • 使用示例

      # 启动Arthas并附加到进程
      java -jar arthas-boot.jar
      # 监控方法执行耗时
      trace com.example.MyClass myMethod
  • Eclipse Memory Analyzer (MAT)

    • 用途:分析堆转储,定位内存泄漏。

    • 优点:强大的内存分析能力。

    • 缺点:需生成堆转储文件,离线分析。

    • 使用流程

      1. jmap生成堆转储。

      2. 使用MAT打开.hprof文件,分析内存占用。

  • Prometheus + Grafana + JMX Exporter

    • 用途:构建实时监控仪表盘。

    • 优点:支持长期存储和告警。

    • 缺点:配置复杂。

    • 部署步骤

      1. 启动应用时添加JMX Exporter Agent:

        java -javaagent:jmx_prometheus_javaagent.jar=8080:config.yml -jar app.jar
      2. Prometheus采集数据,Grafana配置可视化面板。


2. 商业工具
  • JProfiler

    • 用途:CPU、内存、线程分析。

    • 优点:界面友好,深度分析能力。

    • 缺点:付费,仅适合开发/测试环境。

    • 使用:通过GUI连接本地或远程JVM。

  • YourKit

    • 用途:性能分析,类似JProfiler。

    • 优点:低开销,支持生产环境。

    • 缺点:付费。


三、工具选型建议

  • 快速排查线上问题jstack/jmap + Arthas。

  • 内存泄漏分析jmap生成堆转储 + MAT。

  • 长期监控:Prometheus + Grafana。

  • 开发环境深度分析:JProfiler/YourKit。

  • 低开销生产监控:JMC Flight Recorder。


通过结合自带工具和第三方工具,可以覆盖从快速诊断到深度分析的全场景需求。

相关文章:

  • ceph osd 磁盘分区对齐
  • UE4游戏查找本地角色数据的方法-SDK
  • 科学养生:解锁现代健康生活新方式
  • 软考中级软件设计师——数据结构篇
  • C++学习之打车软件—JNI终端编程业务④https协议session开发
  • Vue 3 实现 Excel 表格解析的完整指南
  • 【python实用小脚本-79】[HR转型]Excel难民到数据工程师|用Python实现CSV秒转JSON(附HRIS系统对接方案)
  • React从基础入门到高级实战:React 基础入门 - 列表渲染与条件渲染
  • 物联网 温湿度上传onenet
  • GO语言学习(九)
  • 如何在Mac 上使用Python Matplotlib
  • 网络抓包命令tcpdump及分析工具wireshark使用
  • AI架构师的新工具箱:ChatGPT、Copilot、AutoML、模型服务平台
  • Java常用数据结构底层实现原理及应用场景
  • 大文件上传如何做断点续传?(分别使用vue、React、java)
  • Scp命令使用
  • PPP 拨号失败:ATD*99***1# ... failed
  • AOP的代理模式
  • 计算机系统结构1-3章节 期末背诵内容
  • 从逻辑视角学习信息论:概念框架与实践指南
  • 文山网站建设报价/seo站内优化教程
  • 泰国清迈房产网站大全/百度推广一天费用200
  • 手机网站建设需要多少钱/seo搜索引擎优化业务
  • 网站编辑是什么/引流推广
  • 网站设计制作策划书/英语培训
  • wordpress菜单添加链接/海外网站推广优化专员