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

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.dtcms.com/a/300253.html

相关文章:

  • Java 对象秒变 Map:字段自由伸缩的优雅实现
  • KTO:基于行为经济学的大模型对齐新范式——原理、应用与性能突破
  • 2025测绘程序设计国赛实战 | 基于统计滤波算法的点云去噪
  • 使用binutils工具分析目标文件(贰)
  • U514565 连通块中点的数量
  • 缓存一致性:从单核到异构多核的演进之路
  • HarmonyOS中的PX、 VP、 FP 、LPX、Percentage、Resource 详细区别是什么
  • HCIP--MGRE实验
  • CT、IT、ICT 和 DICT区别
  • Windows卷影复制的增量备份
  • 在VS Code中运行Python:基于Anaconda环境或Python官方环境
  • 人大金仓 kingbase 连接数太多, 清理数据库连接数
  • Go的内存管理和垃圾回收
  • “Datawhale AI夏令营”「结构化数据的用户意图理解和知识问答挑战赛」1
  • 使用Clion开发STM32(Dap调试)
  • 基于华为ENSP的OSPF数据报文保姆级别详解(3)
  • LeetCode——1695. 删除子数组的最大得分
  • TI MSPM0蓝牙串口通信数据包制作
  • C++11 -- emplace、包装器
  • 标准库开发和寄存器开发的区别
  • nfls dp 刷题 题解
  • AutoCAD_2025下载与保姆级安装教程
  • 【安全漏洞】防范未然:如何有效关闭不必要的HTTP请求方法,保护你的Web应用
  • cursor使用方法
  • MGER作业
  • Python 面向对象基础
  • 26考研英语词汇的逻辑笔记
  • 【PCIe 总线及设备入门学习专栏 5.1.3 -- PCIe PERST# 时序要求】
  • 从治理到共情——平台伦理的乡村共建之路
  • DeepSeek-LLM模块解析