写在前面
本章并不是重点,不过我们需要了解一下关于4.2 小节,JDK 命令行工具的部分。大概都使用一下。
4.2 JDK 命令行工具
接下来,我们就介绍一下 JDK 中比较重要的命令行工具。
JPS
JPS(JVM Process Status Tool),用来列出正在运行的虚拟机进程,并且显示虚拟机的主类。
有一些参数, -v 参数,输出 JVM 的进程启动参数。
![](https://img.haomeiwen.com/i14579564/635be99eb59c7da3.png)
用的就是 -l (L) 参数,输出主类的全名,如下图。
![](https://img.haomeiwen.com/i14579564/744591109cf2223c.png)
可以看到,我自己运行了一个 JPSTest 类,也可以被 jps -l 加载显示出来。
jstat
jstat(JVM Statistics Monitoring Tool),用来 监视虚拟机各种运行状态信息的工具。
这里的查询信息,主要是3类:类装载(-class)、垃圾收集(-gc)、运行编译状况(-compiler)
![](https://img.haomeiwen.com/i14579564/48635159325f549a.png)
这里的 gc 是说监控垃圾回收,10524 是java 程序 端口号,250是指每隔250毫秒查询一次,20是指一共查询20次。
![](https://img.haomeiwen.com/i14579564/043b957aa73178f2.png)
可以看到,这个主要是输出已使用空间所占的百分比。
jinfo
jinfo(Configuration info for java),用来实时查看和调整虚拟机的参数。
上面说到 jps -v 输出JVM启动参数,这些参数都是显示指定的。
想要知道一些系统默认的参数,需要使用 jinfo -flag 指令
![](https://img.haomeiwen.com/i14579564/c64c311cc2be88eb.png)
jmap
jmap(Memory Map for Java),生成堆转储快照(称为 dump 文件),查看 java 堆信息。
主要使用的有 -dump -heap 等参数
![](https://img.haomeiwen.com/i14579564/cf7f23aedb4188ec.png)
可以看到,上面的 dump文件失败了。
![](https://img.haomeiwen.com/i14579564/65605362e8e0adea.png)
jhat
jhat(JVM Heap Analysis Tool),用来分析上面一步中 jamp -dump 产生的 dump 文件。
不过一般不会用这个工具分析。
![](https://img.haomeiwen.com/i14579564/02fe8509f35cce48.png)
可以看到这个dump文件并不标准,是我自己用任务管理器生成的,所以在分析时候报错,魔数错误,不是一个标准的类。
jstack
jstack(Stack Trace for Java),用于生成虚拟机当前时刻的线程快照(threaddump)文件。
当线程出现停顿的时候,通过 jstack 来查看各个线程调用的堆栈,就可以看到没有响应的线程在后台做什么。
![](https://img.haomeiwen.com/i14579564/1d4fcf669f0845da.png)
HSDIS
JIT编译代码的反汇编插件。
网友评论