深入理解JVM虚拟机学习笔记(四)虚拟机性能监控和故障处理工具

时间:2022-12-27 16:27:24

jps:虚拟机进程状况工具

可以列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称,以及这些进程本地虚拟机的唯一ID(LVMID)。对于本地虚拟机进程来说,LVMID与操作系统的进程ID是一致的。
jps命令格式:jps [options] [hostid]
深入理解JVM虚拟机学习笔记(四)虚拟机性能监控和故障处理工具

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

是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集JIT编译等运行数据。
jstat [option vmid[interval[s|ms] [counts]]]
对于命令格式中VMID和LVMID特别说明,如果是本地虚拟机进程,VMID和LVMID是一样的,如果是远程虚拟机进程,VMID的格式应该是远程虚拟机ID。
参数interval 和 counts代表查询间隔和次数,如果省略参数,只查询一次。
深入理解JVM虚拟机学习笔记(四)虚拟机性能监控和故障处理工具

jinfo:Java配置信息工具

实时查看和调整虚拟机各项参数。

jmap:Java内存映像工具

用于生成堆转储快照(一般称为heapdump或者dump文件)。如果不想使用命令,可以配置参数-XX:+HeapDumpOnOutOfMemoryError参数,可以让虚拟机在OOM出现之后自动生成dump文件。
jmap的功能不仅仅是生成dump文件,还可以查询finalize执行队列,Java堆和永久代的详细信息,如空间使用率、当前用的是哪种收集器等。
深入理解JVM虚拟机学习笔记(四)虚拟机性能监控和故障处理工具

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

来分析jmap生成的堆转储快照。

jstack:Java堆栈跟踪工具

用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待,都是导致线程长时间停顿的原因。
线程出现停顿的时候,通过jstack来查看各个线程的调用堆栈,就可知道没有响应的线程在后台做些什么事情或者等待什么资源。
深入理解JVM虚拟机学习笔记(四)虚拟机性能监控和故障处理工具