JVM问题排查工具一览

431 阅读2分钟

「这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战」。

jps(虚拟机进程状况工具)

jps可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(LVMID)。

jps执行样例

image.png

主要命令选项

image.png

jstat:虚拟机统计信息监视工具

用于监视虚拟机各种运行状态信息的命令行工具。可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据。

命令

命令格式 : jstat [option vmid [interval count]]

option代表你要查询的类型,vmid和LVMID是一致的,interval和count代表查询间隔和次数。如果省略这两个参数说明只查询一次。

option类型

option主要分为三类:类加载,垃圾收集,运行期编译状况。

image.png

image.png

S0:Survivor1区当前使用比例

S1:Survivor2区当前使用比例

E:Eden区使用比例

O:老年代使用比例

M:元数据区使用比例

CCS:压缩使用比例

YGC:年轻代垃圾回收次数

FGC:老年代垃圾回收次数

FGCT:老年代垃圾回收消耗时间

GCT:垃圾回收消耗总时间

jinfo(Java配置信息工具)

jinfo作用是实时查看和调整虚拟机各项参数。使用jps命令的-v参数可以查看虚拟机启动时指定的参数列表,如果想知道未被显示指定的参数值,就需要

jinfo的-flag来查询。

命令格式

jinfo [ opion ] pid

jmap(JAVA内存映像工具)

jmap用于生成堆转储快照 heapdump或者dump文件。除了获取快照还可以查询finalize执行队列、Java堆和方法区的详细信息,例如空间使用率,

当前用的是哪种收集器等。

命令格式 jmap [ option ] vmid

option选项值

image.png

jhat:虚拟机堆转储快照分析工具

jhat用来分析jmap生成的堆转储快照。jhat内置了web服务器,生成的分析结果可以在浏览器查看。

jstack:java堆栈跟踪工具

jstack用于生成虚拟机当前时刻的线程快照。线程快照是当前虚拟机每一条线程正在执行的方法堆栈的集合,生成线程快照目的就是来排查线程出现长时间停顿的原因,例如线程死锁,死循环,请求外部资源导致的长时间挂起等情况。

option选项值

image.png