news 2026/7/3 14:28:53

JVM监控工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JVM监控工具

一、命令行工具

1.1 jps

查看正在运行的java进程。

jps命令还可以加一些可选参数

-q:仅仅显示进程id-l:显示进程id和java全类名-m:输出虚拟机进程启动时传递给主类main的参数-v:列出虚拟机进程启动时的JVM参数 hostid:远程java进程的ip+端口,查看远程java进程的信息

1.2 jstat

jstat(Java Virtual Machine Statistics Monitoring Tool)Java虚拟机统计信息工具。用于监控虚拟机各种运行状态信息,它可以显示进程中类加载、内存、垃圾收集、JIT编译等运行数据。

在没有GUI图形界面,只提供了纯文本控制台的服务器上,它将是运行期间定位虚拟机性能问题的首选工具,常用于检测垃圾回收问题以及内存泄漏问题。

用法:

jstat-<option>[-t][-h<lines>]<vmid>[<interval>[<count>]]

选项option可以由以下值构成:

  • 类加载相关
    • -class:显示ClassLoader的相关信息:类的加载、卸载信息、总空间、类加载所消耗的时间等
  • 垃圾回收相关
    • -gc:显示与GC相关的堆信息,包括eden区、两个survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息
    • -gccapacity:显示内容与-gc基本相同,但输出主要关注java堆各个区域使用到的最大、最小空间
    • -gcutil:显示内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
    • -gccause:显示内容与-gcutil一样,但是会额外输出导致最后一次或当前正在发生的GC产生的原因
    • -gcnew:显示新生代GC状况
    • -gcnewcapacity:显示内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
    • -gcold:显示老年代GC状况
    • -gcoldcapacity:显示内容与-gcold基本相同,输出主要关注使用到的最大、最小空间
    • -gcpermcapacity:显示永久代使用到的最大、最小空间

interval参数:指定输出的周期,单位为毫秒

count参数:指定输出的总次数

-t参数:可以在输出信息前面加锁一个时间戳列,显示程序的运行时间

-h参数:可以周期性输出表头信息

jstat-gc 进程id

S0C:survivor0区域分配大小

S1C:survivor1区域分配大小

S0U:survivor0区域已使用大小

S1U:survivor1区域已使用大小

EC:eden区域分配大小

EU:eden区域已使用大小

OC:old区域分配大小

OU:old区域已使用大小

MC:meta元空间区域分配大小

MU:meta元空间区域已使用大小

CCSC:压缩类空间区域分配大小

CCSU:压缩类空间区域已使用大小

YGC:young gc次数

YGCT:young gc时间

FGC:full gc次数

FGCT:full gc时间

CGC:总共gc次数

CGCT:总共fc时间

GCT:总共fc时间

1.3 jinfo

实时查看和修改JVM配置参数

开发任意可能不知道某一个具体的jvm参数默认值,这种情况下就可以使用jinfo来查看

查看:

查看系统参数:jinfo-sysprops 进程id 查看曾经赋值的参数:jinfo-flags 进程id

jinfo -flags 进程id

修改:

jinfo可以在程序运行期间修改部分参数并立即生效。

1.4 PringFlagsFinal

查看所有JVM参数的最终值。

用法:

java-XX:+PrintFlagsFinal

1.5 jmap

导出内存快照,查看内存使用情况。

jmap-dump:format=b,file=1.hprof 进程id 生成java堆快照文件 jmap-dump:live,format=b,file=1.hprof 进程id 只保存堆中的存活对象 jmap-heap:输出整个堆空间的详细信息 jmap-histo:输出堆中对象的统计信息,包括:类、实例数量等,-histo:live只统计堆中的存活对象

手动导出堆内存快照

jmap-dump:format=b,file=1.hprof 进程id 生成java堆快照文件 jmap-dump:live,format=b,file=1.hprof 进程id 只保存堆中的存活对象

自动导出堆内存快照,添加JVM参数

-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=1.hprof

1.6 jhat

自带堆分析工具,与jmap搭配使用,用于分析jmap生成的堆快照文件。

使用了jhat命令,就启动了一个http服务,端口是7000,即http://localhost:7000

使用:

jhat 堆内存快照

1.7 jstack

打印JVM中线程快照。

生成线程快照的作用:可用于定位线程出现长时间停顿,如线程间死锁、死循环、请求外部资源导致的长时间等待等问题。

重点留意下面几种状态:

  • 死锁,DeadLock
  • 等待资源,Waiting on condition
  • 邓艾获取监视器,Waiting on monitor entry
  • 阻塞,Blocked

使用:

jstack 进程id

1.8 jcmd

多功能命令行,具有除了jstat以外的所有命令的功能。

二、GUI工具

2.1 jconsole

2.2 Visual VM

2.3 MAT

2.4 JProfiler

2.5 Arthas

2.6 Btrace

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 20:36:04

DeepSeek-R1-Distill-Qwen-1.5B数据隐私:用户输入脱敏处理实战

DeepSeek-R1-Distill-Qwen-1.5B数据隐私&#xff1a;用户输入脱敏处理实战 1. 引言&#xff1a;为什么AI服务必须做输入脱敏&#xff1f; 你有没有想过&#xff0c;当你在某个AI对话框里输入“我身份证号是42010119900307XXXX”时&#xff0c;这句话会去哪&#xff1f;是不是…

作者头像 李华
网站建设 2026/7/1 15:33:58

NewBie-image-Exp0.1部署卡顿?Flash-Attention启用教程提速50%

NewBie-image-Exp0.1部署卡顿&#xff1f;Flash-Attention启用教程提速50% 你是不是也遇到了这种情况&#xff1a;明明已经用上了预配置镜像&#xff0c;结果跑NewBie-image-Exp0.1生成动漫图时还是卡得不行&#xff1f;等一张图生成要好几分钟&#xff0c;显存占用高不说&…

作者头像 李华
网站建设 2026/7/1 15:34:01

基于“身份证精准识别+炫彩活体检测+权威数据比对”三位一体的人脸核身技术,筑牢数字经济的身份安全防线

金融业的数字化转型正步入深水区&#xff0c;远程开户作为服务线上化的关键入口&#xff0c;其安全与合规性已成为行业发展的生命线。中科逸视基于“身份证精准识别炫彩活体检测权威数据比对”三位一体的人脸核身技术&#xff0c;为金融机构构建了既符合监管刚性要求、又兼顾用…

作者头像 李华
网站建设 2026/7/1 15:33:57

5分钟部署YOLO11,一键开启目标检测实战体验

5分钟部署YOLO11&#xff0c;一键开启目标检测实战体验 1. 快速上手&#xff1a;为什么选择YOLO11镜像&#xff1f; 你是不是也遇到过这种情况&#xff1a;想跑一个目标检测模型&#xff0c;结果光是环境配置就花了一整天&#xff1f;依赖冲突、版本不兼容、CUDA报错……这些…

作者头像 李华
网站建设 2026/7/1 15:34:03

RPCS3汉化补丁完整配置指南:3分钟打造完美中文游戏体验

RPCS3汉化补丁完整配置指南&#xff1a;3分钟打造完美中文游戏体验 【免费下载链接】rpcs3 PS3 emulator/debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 让PS3经典游戏告别语言障碍&#xff01;本指南将带你快速掌握RPCS3模拟器汉化补丁的完整应用流…

作者头像 李华
网站建设 2026/7/1 21:01:10

FSMN-VAD如何提升ASR效率?语音片段精准切分实战教程

FSMN-VAD如何提升ASR效率&#xff1f;语音片段精准切分实战教程 1. 为什么语音端点检测对ASR如此关键&#xff1f; 在自动语音识别&#xff08;ASR&#xff09;系统中&#xff0c;我们常常面对一个看似简单却影响深远的问题&#xff1a;如何让模型只“听”该听的部分&#xf…

作者头像 李华