面试官:你用过哪些 JDK 自带的命令行工具

目录#

一、jps:虚拟机进程状况工具
二、jstat:虚拟机统计信息监视工具
三、jmap:Java 内存映像工具
四、jhat:虚拟机堆转储快照分析工具
五、jstack:Java 堆栈跟踪工具
六、jinfo:Java 配置信息工具

java 和 javac 这两个命令行工具我们应该都很熟悉,但是除了这两个工具 jdk/bin 里面还提供了很多工具给我们使用,今天就简单介绍有关虚拟机监控且助于故障排查的工具。

jdk/bin中部分工具截图

实际上这些工具大多数就是 jdk/lib/tool.jar 的封装,内部就是调用 tool 里面的内容,所以工具体积都不大,而且在 linux 版本的 jdk 中有些工具就是用 shell 写的。

1.jps(JVM Process Status Tool)#

用于显示指定系统内所有 HotSpot 虚拟机进程,并且能显示虚拟机执行主类以及本地虚拟机唯一 ID(LVMID,Local Virtual Machine Identifier)功能单一,但是其他因为其他工具都需要指明 LVMID (来确定要监控的虚拟机进程,所以都需要用到它。对于本地的虚拟机进程来说 LVMID 和操作系统的进程 ID 一致。

使用格式:jps [options] [hostid]

option

样例:

jps 可以通过 RMI 协议查询远程开启 RMI 服务的虚拟机进程,hostid 为 RMI 注册表中注册的主机名。

2.jstat(JVM Statistics Monitoring Tool)#

用于监视虚拟机各种运行状态信息的工具,可以显示本地或者远程的虚拟机进程类装载、内存、GC、JIT 等运行数据,在没有 GUI 图像界面的服务器上,主要就是用它在运行期定位性能问题。

使用格式 :jstat [option vmid [interval [s|ms] [count]] ]

option

interval 表示查询的间隔, s|ms 是秒和毫秒 (默认是毫秒,即不写单位是毫秒),count 表示查询的次数。

样例:表示每 5 秒钟查看一次 LVMID 为 34216 的虚拟机进程的 GC 情况,一共查询 10 次

3.jmap (Memory Map for Java)#

用于生成堆转储快照 (heapdump 或 dump 文件),说白了就是把 java 堆使用情况快照一份导出来供我们查看,用来排查问题。

使用格式 :jmap [option] vmid

option

样例

4.jhat (JVM Heap Analysis Tool)#

这个就是和 jmap 搭配使用的,jmap 导出来的堆快照文件用 jhat 打开分析

使用格式: jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>

option

样例:

查看分析结果

5.jstack (Stack Trace for Java)#

用于生成虚拟机当前时刻线程快照 (threaddump 或 javacore)。主要用来定位线程出现长时间停顿的原因,判断死锁啊,死循环的等。通过 jstack 就可知各线程的调用堆栈情况。

使用格式:jstack [option] vmid

option

样例:

6.jinfo (Configuration Info for Java)#

用来查看和调整虚拟机各项参数

使用格式:jinfo [option] pid

可以通过 - flag [+|-] name 添加和删除一些参数,或者 - flag name =value 修改一些参数,但是很多参数是不允许修改的

option

样例:

结语#

本文主要是简单介绍常见的几个 JDK 命令行工具,建议使用的时候自己通过命令 -option 查看每个选项实际的意思再使用,毕竟这么选项一般也记不住。而且这些工具有一些算比较简陋了例如 jhat ,这玩意分析的简陋,界面也简陋不够强大和专业。所以这些个命令行工具以了解和大概明白其作用为主。

像平日里一般用于分析都用 JConsole、VisualVM (All-in-One Java Troubleshooting Tool) 这种可视化工具来分析故障监控性能等,有些在 IDE 里面的也有用 MAT 等工具分析。

本作品采用《CC 协议》,转载必须注明作者和本文链接
lizhiqiang666
技术负责人 @ 某某
文章
90
粉丝
209
喜欢
900
收藏
1013
排名:26
访问:23.7 万
私信
所有博文
社区赞助商