01|jps 虚拟机进程状况工具

可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID
命令格式:

  1. jps [optins][hostid]

option可选参数:

  • -l:输出Java应用程序的main class的完整包路径
  • -m:输出传递给main方法的参数
  • -v:输出传递给JVM的参数。在诊断JVM相关问题的时候,这个参数可以查看JVM相关参数的设置

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

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

命令格式:

  1. jstat [option vmid[interal[s|ms][count]]]

参数说明:
option可选参数:

  • -class:显示有关类加载器行为的统计信息
  • -compiler:输出即时编译器编译过的方法、耗时等信息
  • -gc:监视Java堆状态,包括Eden区、2个Survivor区、老年代、永久代等的容量,已用空间,垃圾手机时间合计等信息

    • 示例:
      1. # 每个500毫秒查询一次进程203垃圾收集状况,一共查询50
      2. jstat -gc 203 500 50
  • -gccapacity:监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间

  • -gccause:监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
  • -gcnew:监视新生代垃圾收集状况
  • -gcnewcapacity:监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
  • -gcold:监视老年代垃圾收集状况
  • -gcoldcapacity:监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间
  • -gcmetacapacity:输出永久代使用到的最大、最小空间
  • -gcutil:输出即时编译器编译过的方法、最小空间
  • -printcompilation:输出已经被即时编译的方法

vmind:由jps获得
interval和count代表查下间隔和次数,默认为查询一次

03|jinfo:Java配置信息工具

实时查看和调整虚拟机各项参数
命令格式:

  1. jinfo [option] pid

04|jmap:Java内存映象工具

命令用于生成堆储快照(heapdump或dump文件),查询finalize执行队列、Java堆和方法区的详细信息(空间使用率、当前收集器类型)
命令格式:

  1. jmap [option] vmid

option可选参数:

  • -dump:生成Java堆转储快照
  • -finalizerinfo:显示在F-Queue中等待Finalizer线程执行finalize方法的对象
  • -heap:显示Java堆详细信息
  • -histo:显示堆中对象统计信息(类、实例数量、合计容量)
  • -permstat:以ClassLoader为统计口径显示永久代内存状态
  • -F:当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照

05|jstack:Java堆栈跟踪工具

用于生成虚拟机当前时刻的线程快照(threaddump或者javacore文件)。线程快照就是当前虚拟机内每一个条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现上时间停顿的原因(线程间死锁、死循环、请求外部资源导致的长时间挂起)
命令格式:

  1. jstack [option] vmid

option可选参数:

  • -F:当正常输出的请求不被响应时,强制输出线程堆栈
  • -l:除堆栈外,显示关于锁的附加消息
  • -m:如果调用本地方法的话,可以显示C/C++的堆栈

    06|可视化故障处理工具

    JConsole

    JHSDB

    VIsualVM

    JMC

    Arthas

    参考:https://docs.oracle.com/javase/8/docs/technotes/tools/unix