JVM常用排查工具这些你都会用吗
阅读本文你可以学到以下命令的常规使用【jps,jinfo,jstat,jmap,jstack,jcmd,jrunscript,jjs】
jps
获取当前运行中java进程,
示例:
jps -lmv 可以打印详细信息
-l 输出main类或jar的全限名,-m传入main方法的参数,-v传入jvm的参数
jinfo
使用 jinfo pid 可以查看当前进程系统属性信息以及进程启动jvm参数信息,jdk版本信息
示例:jinfo pid
jstat
JVM统计检测工具
示例:
jstat -gc pid 1000 10 (打印pid的gc信息,每一秒打印一次,打印10次)
jstat -gcutil pid 1000 10(打印pid的gc百分比信息,每一秒打印一次,打印10次)
说明 C是容量(capacity),U是使用量(utilization)
S0C survivor0区的容量
S0U survivor0区的使用量
S1C survivor1区的容量
S1Usurvivor1区的使用量
EC eden区的容量
EU eden区的使用量
OC old区的容量
OU old区的使用量
MC 元数据区容量
MU 元数据区使用量
CCSC 压缩的class空间容量
CCSU 压缩的class空间使用量
YGC 年轻代GC次数
YGCT 年轻代GC总时间
FGC Full GC 次数
FGCT Full GC总时间
GCT 垃圾收集总时间
jmap
打印堆内存配置和使用信息
jmap -heap pid
看哪些类占用的空间最多
jmap -histo pid
dump 文件输出
jmap -dump:format=b,file=xxxx.hprof pid
jstack
-f 强制执行thread dump 可在进程卡死时使用,需要系统权限
jstack -f pid
-m 混合输出(mixed mode) 将java帧和native帧一起输出
jstack -m pid
-l 输出详细信息,长列表模式,打印相关的锁信息
jstack -l pid
jcmd
查看信息
可以使用 jcmd pid help 获取可以查看当前进程参数信息
// 版本
jcmd pid VM.version
// 参数
jcmd pid VM.flags
// 启动命令
jcmd pid VM.command_line
// 系统参数
jcmd pid VM.system_properties
// 线程信息
jcmd pid VM.Thread.print
// GC 占用空间情况
jcmd pid GC.class_histogram
// GC 年轻代,老年代,元数据区信息
jcmd pid GC.heap_info
jrunscript/jjs
-
jrunscript
当curl 用
jrunscript -e "cat('http://www.baidu.com')"
执行js命令
jrunscript -e "print('hello zuiyu.jvm')"
执行js文件
jrunscript -l js -f /xx/xx/test.js
-
jjs
交互控制台使用
image-20220109215617800
Java进阶
扫码关注 不迷路
微信:zuiyu17970
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用