用过哪些JDK自带的命令行工具

柔光的暖阳◎ 2022-02-02 09:07 375阅读 0赞

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

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

35a85edf8db1cb13bd32116516739e4a92584b1d.jpeg_token_beadff2b41a60fef97a6252337a93b5d_s_C982CD1B03C0614B18D580DA000090B2jdk/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]

a8014c086e061d95773113e4b1d3c2d563d9caa7.jpeg_token_509fb65f5013250c939e36f9d3319ad0_s_61984C33CD28490340C541D3000080B2option

样例:

d009b3de9c82d1587c850a684a2dd1dcbd3e4294.jpeg_token_41ed8a6a3d8238d88a7d6448ff2b97ad_s_EDE23A62CD043F700C78D4060000E0C1

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

2.jstat(JVM Statistics Monitoring Tool)

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

使用格式 :

jstat [option vmid [interval [s|ms] [count]] ]

0df431adcbef76095ac97c60e5fa6bc87dd99e3f.jpeg_token_79ff8c44a90e84396bd5d5f25d221409_s_FD98EC1B99CD40CA4CF5E5DF000080B3option

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

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

1e30e924b899a9011c565487d6b2c27f0308f5c8.jpeg_token_38f6c20356ddf29458a2c3d1ae63e490_s_6CE23266CBAEB7724E75FC0F000070C2

3.jmap (Memory Map for Java)

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

使用格式 :

jmap [option] vmid

f9dcd100baa1cd11b3d23731753500f8c3ce2d63.jpeg_token_605cb7a10a7af25b61db38e2d80f62bc_s_F598EC33C572E421185DC8DB020010B0option

样例

78310a55b319ebc4f22c603e4e0107f81f1716e8.jpeg_token_5feb7cf70ed36431b8b53d8cca2aa12d

4.jhat (JVM Heap Analysis Tool)

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

使用格式:

jhat [-stack ] [-refs ] [-port ] [-baseline ] [-debug ] [-version] [-h|-help]

562c11dfa9ec8a1394b1c2ed3c24598ba1ecc0c5.jpeg_token_25a0c5cc0c48b08864103cb502092c11_s_95906C33CDB47C0314554DD6020010B0option

样例:

0bd162d9f2d3572c228ecb354034ab2363d0c393.jpeg_token_499b044bfcefd4f231bb8794608fa176_s_2C627222DBE08C5B5C75180F000070C0

查看分析结果

78310a55b319ebc42a1cfc4f5a0107f81f1716a8.jpeg_token_28b1dd5d9eaee43bf2aaaefc488c6e4a_s_AEE0991AD91F40CC04EC19D80200C0B4

5.jstack (Stack Trace for Java)

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

使用格式:

jstack [option] vmid

359b033b5bb5c9ea65296505191e7e043bf3b32e.jpeg_token_374b36802e089b1e0578c2f5ae807768option

样例:

8644ebf81a4c510f4673cc97ab7eed29d52aa5b0.jpeg_token_5aacdfcf68f9ddabbe79ee5908747134_s_E9E03A628BA5BB725CF5590F0000E0C1

6.jinfo (Configuration Info for Java)

用来查看和调整虚拟机各项参数使用格式:

jinfo [option] pid

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

11385343fbf2b2115585bae506a7ad3c0dd78e9a.jpeg_token_3ee49e254e81f0edaccf50e63a29fa80option

样例:

a686c9177f3e670971c3019af7e05739f9dc5544.jpeg_token_ec38045e4ae46392d7a4065765de2754

结语

本文主要是简单介绍常见的几个JDK命令行工具,建议使用的时候自己通过命令 -option 查看每个选项实际的意思再使用,毕竟这么选项一般也记不住。

而且这些工具有一些算比较简陋了例如jhat ,这玩意分析的简陋,界面也简陋不够强大和专业。所以这些个命令行工具以了解和大概明白其作用为主。

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

如有错误欢迎指正!

参考 :https://mbd.baidu.com/newspage/data/landingsuper?context=%7B”nid”%3A”news_9562646819328178690”%7D&n_type=1&p_from=3

发表评论

表情:
评论列表 (有 0 条评论,375人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JDK命令工具

    双12买了深入理解Java虚拟机的书,其实在学校的时候,就看过PDF版的,但是最终还是买本书装装样子,今天说的东西是书籍提到的JDK常用命令,实验加上记录来加深一下印象。 j