当前位置: 首页 > 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.lryc.cn/news/601015.html

相关文章:

  • AI 编程还有多远?我们如何迎接 AI 编程时代?
  • 【MySQL数据库备份与恢复2】备份的三种常用方法
  • MPI练习:前缀和问题
  • Effective C++ 条款4:确定对象被使用前已先被初始化
  • 7月26日星期六今日早报简报微语报早读
  • Effective C++ 条款03:尽可能使用const
  • 【AcWing 154题解】滑动窗口
  • 【音视频协议篇】WebRTC 快速入门
  • 嵌入式硬件篇---zigbee无线串口通信问题
  • 谷歌无法安装扩展程序解决方法(也许成功)
  • 【C++】stack和queue的模拟实现
  • 机器学习的工作流程
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-30,(知识点:传输线特性阻抗,影响因素)
  • Avantage6.6下载与安装教程
  • 瑞吉外卖学习笔记
  • 兼容性问题记录
  • 亚马逊测评采购:如何打造安全的环境,技术基础关键
  • Python点阵字生成与优化:从基础实现到高级渲染技术
  • JavaScript 立即执行函数(IIFE)运行时行为分析笔记
  • golang实现一个规则引擎,功能包括实时增加、修改、删除规则
  • GO 从入门到精通2
  • 什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
  • 编程语言Java——核心技术篇(四)集合类详解
  • 【Pandas】pandas Index objects Index.shape
  • 【595驱动8*8点阵】2022-9-11
  • Linux文件系统管理——NFS服务端的安装配置与NFS客户端的安装与挂载实操教程
  • QT核心————信号槽
  • MyBatis-Plus 进阶功能:分页插件与乐观锁的实战指南
  • org.apache.lucene.search.Query#rewrite(IndexSearcher)过时讲解
  • 框架式3D打印机结构设计cad【9张】三维图+设计说明书