jmap
- jmap -dump:format=b,file=xxx.bin pid
生成堆转储快照
- jmap -heap pid
显示java堆详细信息
- jmap -histo pid
显示堆中对象统计信息
jinfo
jinfo的作用实时查看和调整虚拟机各项参数。
- jinfo -flag xxx pid
查看未被显示指定参数的系统默认值,例如 jinfo -flag CMSClassUnloadingEnabled pid
- java -XX:+PrintFlagsFinal pid
jdk1.6及以上通过此命令查看系统默认值
- jinfo -sysprops pid
把进程中System.getProperties()的内容打印出来
- jinfo -flag [+|-] pid
设置或取消JVM参数的值,例如:增加 jinfo -flag +PrintGCDetails 12797, 取消 jinfo -flag -PrintGCDetails 12797
- jinfo -flag = pid
设置指定JVM参数的值
jps
- jps -l
输出主类的全貌,如果进程执行的是jar包,输出jar路径
- jps -v
输出虚拟机进程启动时JVM参数
jstat
虚拟机统计信息监视工具
- 命令格式
jstat [option vmid [interval[s|ms] [count]]]
- jstat -class pid
监视类装载,卸载数量,总空间以及类的所消耗的时间
- jstat -gc pid
监视java堆情况,包括Eden区、两个survivor区、老年代、永久代容量、已用空间等
- jstat -gcutil pid
监视内容与-gc基本相同,但是输出主要关注已使用的空间占总空间的百分比
jstack
用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈集合,生成快照的目的就是定位耗时长,死锁等导致线程出现长时间停顿原因。
- 命令格式
jstack [option] pid
- jstack -l pid
除堆栈外,显示关于锁的附加信息
- jstack -m pid
如果调用到本地方法,可以显示c/c++的堆栈
- jstack -F pid
当正常输出的请求不被响应时,强制输出线程堆栈。
其他輔助排查命令
- top -Hp pid
根据pid找到最耗费cpu的线程
- printf "%x\n" tid
根据对应值转换为16进制,用于从线程dump文件中,找到对应的线程,例如:printf "%x\n" 18884
- JS控制台进行16进制转换











