本文基于HotSpot虚拟机,JDK版本1.8.0_171,windows系统java
1、jps:虚拟机进程情况工具 2、jstat:虚拟机统计信息监视工具 3、jmap:Java内存映像工具 4、jhat:虚拟机堆转储快照分析工具 5、jstack:Java堆栈跟踪工具 6、jinfo:Java配置信息工具linux
java和javac这两个命令行工具咱们应该都很熟悉,可是除了这两个工具jdk/bin里面还提供了不少工具给咱们使用,今天就简单介绍有关虚拟机监控且助于故障排查的工具。 面试
用于显示指定系统内全部HotSpot虚拟机进程,而且能显示虚拟机执行主类以及本地虚拟机惟一ID(LVMID,Local Virtual Machine Identifier)功能单一,可是其余由于其余工具都须要指明LVMID(来肯定要监控的虚拟机进程,因此都须要用到它。对于本地的虚拟机进程来讲LVMID和操做系统的进程ID一致。shell
使用格式:jps [options] [hostid]
windows
jps能够经过RMI协议查询远程开启RMI服务的虚拟机进程,hostid为RMI注册表中注册的主机名。服务器
用于监视虚拟机各类运行状态信息的工具,能够显示本地或者远程的虚拟机进程类装载、内存、GC、JIT等运行数据,在没有GUI图像界面的服务器上,主要就是用它在运行期定位性能问题。分布式
使用格式 :jstat [option vmid [interval [s|ms] [count]] ]
工具
interval
表示查询的间隔, s|ms
是秒和毫秒(默认是毫秒,即不写单位是毫秒),count
表示查询的次数。性能
样例:表示每5秒钟查看一次LVMID为34216的虚拟机进程的GC状况,一共查询10次 操作系统
用于生成堆转储快照(heapdump或dump文件),说白了就是把java堆使用状况快照一份导出来供咱们查看,用来排查问题。
使用格式 :jmap [option] vmid
这个就是和jmap搭配使用的,jmap导出来的堆快照文件用jhat 打开分析
使用格式: jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>
样例:
用于生成虚拟机当前时刻线程快照(threaddump或javacore)。主要用来定位线程出现长时间停顿的缘由,判断死锁啊,死循环的等。经过jstack就可知各线程的调用堆栈状况。
使用格式:jstack [option] vmid
样例:
用来查看和调整虚拟机各项参数
使用格式:jinfo [option] pid
能够经过-flag[+|-] name 添加和删除一些参数,或者-flag name =value修改一些参数,可是不少参数是不容许修改的
本文主要是简单介绍常见的几个JDK命令行工具,建议使用的时候本身经过命令 -option
查看每一个选项实际的意思再使用,毕竟这么选项通常也记不住。并且这些工具备一些算比较简陋了例如jhat ,这玩意分析的简陋,界面也简陋不够强大和专业。因此这些个命令行工具以了解和大概明白其做用为主。
像平日里通常用于分析都用JConsole、VisualVM(All-in-One Java Troubleshooting Tool)这种可视化工具来分析故障监控性能等,有些在IDE里面的也有用MAT等工具分析。
本文参考《深刻理解JAVA虚拟机》第四章
若有错误欢迎指正!
我的公众号:yes的练级攻略
有相关面试进阶(分布式、性能调优、经典书籍pdf)资料等待领取