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

JVM--监控和故障处理工具

一、命令行工具

1. jps (Java Process Status)

作用:列出当前系统中所有的 Java 进程
常用命令

jps -l  # 显示进程ID和主类全名
jps -v  # 显示JVM启动参数

输出示例

1234 com.example.MainApp
5678 org.apache.catalina.startup.Bootstrap

2. jstat (JVM Statistics Monitoring Tool)

作用:实时监控 JVM 运行状态(GC、类加载、JIT编译等)
核心功能

   jstat -gcutil <pid> 1000 5 # 每1秒打印1次GC统计,共5次

关键指标

  • S0/S1:Survivor 区使用率

  • E:Eden 区使用率

  • O:Old 区使用率

  • YGC/YGCT:Young GC 次数/耗时

  • FGC/FGCT:Full GC 次数/耗时


3. jinfo (Configuration Info for Java)

作用:查看和动态修改 JVM 参数
常用命令

jinfo -flags <pid>       # 查看所有JVM参数
jinfo -flag MaxHeapSize <pid>  # 查看特定参数
jinfo -flag +PrintGC <pid>    # 动态启用PrintGC

4. jmap (Memory Map for Java)

作用:生成堆内存快照和内存统计
核心功能

典型场景:内存泄漏分析、对象分布统计


5. jhat (JVM Heap Analysis Tool)

作用:分析 jmap 生成的堆转储文件
使用流程

  1. 生成堆转储:jmap -dump:file=heap.bin <pid>

  2. 启动分析服务:jhat heap.bin

  3. 浏览器访问:http://localhost:7000/
    功能:对象查询、引用链分析、内存泄漏检测


6. jstack (Stack Trace for Java)

作用:生成线程快照(thread dump)
关键命令

jstack -l <pid> > thread.txt  # 生成线程快照并保存

诊断场景

  • 死锁检测(查找deadlock关键词)

  • 线程阻塞分析

  • CPU 飙高问题定位

二、图形化监控工具

   jvisualvm.exe JDK 自带的图形化监控诊断工具与你jps/jstack/jmap 等属于同一套工具链,但提供可视化操作界面。以下是关键解析:

一、典型使用场景

1. 快速定位内存泄漏
  • 步骤:

    1. 在进程列表中选择应用

    2. 点击 “堆 Dump” 生成快照

    3. 分析 “类” 标签页 → 按实例数/大小排序 → 定位可疑对象

2. 诊断 CPU 飙高
  • 步骤:

    1. 打开 “抽样器” → 点击 CPU 按钮

    2. 查看 “热点方法” 排名

    3. 结合 线程快照 分析阻塞栈

3. 分析死锁
  • 步骤:

    1. 打开 “线程” 标签页

    2. 点击 “检测死锁” → 自动标记死锁线程


二、与命令行工具对比

需求推荐工具原因
快速检查进程状态jps一条命令即完成
脚本自动化监控jstat适合集成到运维系统
深度分析内存泄漏jvisualvm可视化引用链,效率提升 10 倍+
生产环境紧急诊断jcmd + jstack轻量级,避免图形界面资源消耗
长期性能趋势分析jvisualvm支持保存快照对比历史数据

三、注意事项

  1. 版本兼容性

    • JDK 8 及之前:内置 jvisualvm

    • JDK 9+:需单独下载(从 JDK 分离为独立项目)

http://www.xdnf.cn/news/1101421.html

相关文章:

  • 正义的算法迷宫—人工智能重构司法体系的技术悖论与文明试炼
  • 区块链应用场景深度解读:从金融革命到社会治理的全方位革新
  • spark3 streaming 读kafka写es
  • 使用浏览器inspect调试wx小程序
  • 【HTML】俄罗斯方块(精美版)
  • AI产品经理面试宝典第7天:核心算法面试题-上
  • GPT3/chatGPT/T5/PaLM/LLaMA/GLM主流大语言模型的原理和差异
  • flutter redux状态管理
  • 文章发布易优CMS(Eyoucms)网站技巧
  • oracle
  • 【InnoDB存储引擎4】行结构
  • PDF转图片
  • 2025 年第十五届 APMCM 亚太地区大学生数学建模竞赛-B题 疾病的预测与大数据分析
  • 滑动窗口-3.无重复字符的最长子串-力扣(LeetCode)
  • 使用Python和AkShare轻松获取新闻联播文字稿:从数据获取到文本挖掘
  • vue3+ts div自由拖拽改变元素宽度
  • C++——构造函数的补充:初始化列表
  • UML 与 SysML 图表对比全解析:软件工程 vs 系统工程建模语言
  • ContextMenu的Item如何绑定命令
  • “28项评测23项SOTA——GLM-4.1V-9B-Thinking本地部署教程:10B级视觉语言模型的性能天花板!
  • 【AI大模型】BERT微调文本分类任务实战
  • 拼数(字符串排序)
  • 力扣面试150(29/100)
  • 问题 C: 为美好的世界献上爆炎(博弈论)
  • 如何在 Windows 10 上安装设置 Apache Kafka
  • 聊聊AI大模型的上下文工程(Context Engineering)
  • 你见过的最差的程序员是怎样的?
  • Redis底层数据结构
  • CSS3的核心功能介绍及实战使用示例
  • 提示工程:解锁大模型潜力的核心密码