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

JVM常见工具

文章目录

  • 命令行工具
    • jps - 查看Java进程
    • jstat - 监控JVM统计信息
    • jmap - 内存映像工具
    • jstack - 线程堆栈分析
    • jinfo - 查看和修改JVM参数
  • 图形化工具
    • JConsole - 基础监控工具
    • VisualVM - 功能全面的分析工具
    • Arthas - 阿里开源的神器

命令行工具

jps - 查看Java进程

这是最基础的工具,相当于Linux的ps命令,专门用来查看Java进程。

基本用法:

jps                    # 显示所有Java进程
jps -l                 # 显示完整的类名或jar包路径
jps -v                 # 显示JVM参数
jps -m                 # 显示传给main函数的参数

实际场景:
当服务器上跑了多个Java应用,你想知道哪个进程是你要监控的时候,jps就派上用场了。比如你的应用叫UserService,直接jps -l就能找到对应的进程ID。

jstat - 监控JVM统计信息

这个工具能告诉你内存使用情况、垃圾回收频率等关键指标。

常用命令:

jstat -gc pid                    # 查看垃圾回收情况
jstat -gcnew pid                 # 统计新生代的情况
jstat -gccapacity pid            # 查看各代内存容量
jstat -gcutil pid                # 查看各代内存使用百分比

输出结果:

  • S0C、S1C:Survivor区容量
  • EC:Eden区容量
  • OC:老年代容量
  • YGC:年轻代GC次数
  • YGCT:年轻代GC耗时
  • FGC:Full GC次数
  • FGCT:Full GC耗时

jmap - 内存映像工具

这个工具主要用来分析内存使用情况,特别是在发生内存溢出时,它能帮你保留现场。

常用命令:

jmap -histo pid                           # 查看对象分布统计
jmap -histo pid | head -20                # 只看前20行
jmap -dump:format=b,file=heap.hprof pid  # 生成堆转储文件
jmap -dump:live,format=b,file=heap.hprof pid  # 只dump存活对象

jstack - 线程堆栈分析

这个工具用来查看所有线程在干什么,特别适合排查死锁、线程阻塞等问题。

基本用法:

jstack pid                    # 查看所有线程状态
jstack pid > threads.txt      # 保存到文件

怎么看线程状态:

  • RUNNABLE:正在运行
  • BLOCKED:被阻塞,等待获取锁
  • WAITING:等待被唤醒
  • TIMED_WAITING:限时等待

jinfo - 查看和修改JVM参数

这个工具可以在不重启应用的情况下查看甚至修改某些JVM参数。

常用命令:

jinfo pid                              # 查看所有JVM参数
jinfo -flags pid                       # 只查看-XX参数
jinfo -flag PrintGC pid                # 查看某个具体参数
jinfo -flag +PrintGC pid               # 开启某个参数
jinfo -flag -PrintGC pid               # 关闭某个参数

图形化工具

JConsole - 基础监控工具

JConsole是JDK自带的图形化监控工具,界面简单直观。

启动方式:

jconsole                    # 直接启动,选择要监控的进程
jconsole pid                # 直接连接指定进程

在这里插入图片描述
在这里插入图片描述

主要功能:

  • 内存使用情况:能看到各个内存区域的使用趋势
  • 线程情况:包括线程数量、死锁检测
  • 类加载情况:已加载的类数量

VisualVM - 功能全面的分析工具

VisualVM功能比JConsole强大很多,是很多开发者的首选。
在这里插入图片描述
在这里插入图片描述

主要功能:

  • 实时监控:CPU、内存、线程使用情况
  • 性能分析:CPU采样、内存采样
  • 堆转储分析:可以直接在工具内分析heap dump文件

使用建议:
VisualVM特别适合本地开发时使用。如果要监控远程服务器,需要配置JMX连接参数。

Arthas - 阿里开源的神器

Arthas是阿里开源的Java诊断工具,可以说是目前最好用的线上诊断工具,没有之一。
基础诊断:

dashboard          # 实时查看系统信息,比jstat更直观
thread             # 查看线程信息,比jstack更详细
jvm                # 查看JVM信息
memory             # 查看内存信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从Arthas的一些基本命令我们就可以得到非常丰富、全面的信息,比之前的命令行工具好用多了。

作用:

  1. 它可以实时监控方法调用、追踪性能瓶颈、分析内存和线程问题。
  2. 以前线上出问题只能通过日志猜测或者重启应用,现在用Arthas可以调用链路耗时、线程状态等详细信息,更有利于我们排查线上问题。
http://www.xdnf.cn/news/16240.html

相关文章:

  • swagger基本注解@Tag、@Operation、@Parameters、@Parameter、@ApiResponse、@Schema
  • 基于图神经网络的星间路由与计算卸载强化学习算法设计与实现
  • 【Linux手册】操作系统如何管理存储在外设上的文件
  • 基于 Claude Code 与 BrowserCat MCP 的浏览器自动化全链路构建实践
  • iOS 26,双版本更新来了
  • 【web大前端】001_前端开发入门:创建你的第一个网页
  • 二十八、【Linux系统域名解析】DNS安装、子域授权、缓存DNS、分离解析、多域名解析
  • 前端开发 Vue 结合Sentry 实现性能监控
  • 配置DNS正反向解析
  • 告别复杂配置!Spring Boot优雅集成百度OCR的终极方案
  • JAVA算法题练习day1
  • 常见代码八股
  • 【深度之眼机器学习笔记】04-01-决策树简介、熵,04-02-条件熵及计算举例,04-03-信息增益、ID3算法
  • 力扣671. 二叉树中第二小的节点
  • Spring框架
  • 【LeetCode刷题指南】--有效的括号
  • Springboot项目实现将文件上传到阿里云
  • 【PyTorch】图像多分类项目
  • Yolo底层原理学习(V1~V3)(第一篇)
  • 2507C++,窗口勾挂事件
  • 我从农村来到了大城市
  • 绘图库 Matplotlib Search
  • C语言案例《猜拳游戏》
  • 【C++进阶】第7课—红黑树
  • ZYNQ芯片,SPI驱动开发自学全解析个人笔记【FPGA】【赛灵思】
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(10):ような复习
  • JAVA_FourTEEN_常见算法
  • 2025年7月区块链与稳定币最新发展动态深度解析
  • 基于讯飞星火AI的文学作品赏析系统开发实战:从通用聊天到专业文学分析的完整技术方案
  • Netty中future和promise用法和区别