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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值