第4章 虚拟机性能监控与故障处理工具

2020-02-12  本文已影响0人  MikeShine

写在前面

本章并不是重点,不过我们需要了解一下关于4.2 小节,JDK 命令行工具的部分。大概都使用一下。


4.2 JDK 命令行工具

接下来,我们就介绍一下 JDK 中比较重要的命令行工具。

JPS

JPS(JVM Process Status Tool),用来列出正在运行的虚拟机进程,并且显示虚拟机的主类。
有一些参数, -v 参数,输出 JVM 的进程启动参数。

jps -v 输出 JVM 启动参数

用的就是 -l (L) 参数,输出主类的全名,如下图。


jps -l 输出主类全名

可以看到,我自己运行了一个 JPSTest 类,也可以被 jps -l 加载显示出来。

jstat

jstat(JVM Statistics Monitoring Tool),用来 监视虚拟机各种运行状态信息的工具。
这里的查询信息,主要是3类:类装载(-class)、垃圾收集(-gc)、运行编译状况(-compiler)


jstat在 Mike PC上的运行实例

这里的 gc 是说监控垃圾回收,10524 是java 程序 端口号,250是指每隔250毫秒查询一次,20是指一共查询20次。


jstat 实例2
可以看到,这个主要是输出已使用空间所占的百分比。
jinfo

jinfo(Configuration info for java),用来实时查看和调整虚拟机的参数。
上面说到 jps -v 输出JVM启动参数,这些参数都是显示指定的。
想要知道一些系统默认的参数,需要使用 jinfo -flag 指令

jinfo -flag 指令查询 CMSInitiatingOccupancyFraction参数
jmap

jmap(Memory Map for Java),生成堆转储快照(称为 dump 文件),查看 java 堆信息。
主要使用的有 -dump -heap 等参数

jmap -dump 生成堆转储快照
可以看到,上面的 dump文件失败了。
jmap -heap 查看堆内存信息
jhat

jhat(JVM Heap Analysis Tool),用来分析上面一步中 jamp -dump 产生的 dump 文件。
不过一般不会用这个工具分析。


jhat 分析 dump 文件

可以看到这个dump文件并不标准,是我自己用任务管理器生成的,所以在分析时候报错,魔数错误,不是一个标准的类。

jstack

jstack(Stack Trace for Java),用于生成虚拟机当前时刻的线程快照(threaddump)文件。
当线程出现停顿的时候,通过 jstack 来查看各个线程调用的堆栈,就可以看到没有响应的线程在后台做什么。


jstack 查看线程调用堆栈
HSDIS

JIT编译代码的反汇编插件。

上一篇下一篇

猜你喜欢

热点阅读