【JVM】【三】【JVM命令行及可视化工具】


一、JVM命令行工具

1.1、jps 虚拟机进程状况工具

1.1.1、命令

jps [options] [hostid]

1.1.2、作用

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

1.1.3、使用场景

  • 需要确认进程id

1.1.4、参数

-q 只输出LVMID.省略主类的名称
-m 输出虚拟机进程启动时传递给主类main()承数的参数
-l 输出主类的全名,如果进程执行的是JAR包,则输出JAR路径
-v 输出虚拟机进程启动时的JVM参数

1.1.5、使用

  • jps

  • jps -q

  • jps -m

  • jps -l

  • jps -v

注:对于本地虚拟机进程来说, LVMID与操作系统的进程ID (PID, Process Identifier)是一致的,使用Windows的任务管理器或者UNIX的ps命令也可以查询到虚拟机进程的LVMID。

1.2、jstack Java堆栈跟踪工具

1.2.1、命令

jps [options] vmid

1.2.2、作用

用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件) ,线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。

1.2.3、使用场景

  • 线程出现长时间停顿(如线程间死锁、死循环、请求外部资源导致的长时间挂起等,都是导致线程长时间停顿的常见原因)

注:线程出现停顿时通过jstack来查看各个线程的调用堆栈,就可以获知没有响应的线程到底在后台做些什么事情,或者等待着什么资源

1.2.4、参数

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

1.2.5、使用

  • jstack -F vmid

  • jstack -l vmid

  • jstack -m vmid

1.3、jinfo Java配置信息工具

1.3.1、命令

jinfo [options] pid

1.3.2、作用

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

1.3.3、使用场景

  • 使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表,但如果想知道未被显式指定的参数的系统默认值,除了去找资料外,就只能使用jinfo的-flag选项进行查询了(如果只限于JDK 6或以上版本的话,使用javaXX: +PrintFlagsFinal查看参数默认值也是一个很好的选择)。
  • jinfo还可以使用-sysprops选项把虚拟机进程的System.getPropertiesO的内容打印出来。这个命令在JDK 5时期已经随着Linux版的JDK发布,当时只提供了信息查询的功能, JDK 6之后,jinfo在Windows和Linux平台都有提供,并且加入了在运行期修改部分参数值的能力(可以使用-flag[+-]name或者-flag name-value在运行期修改一部分运行期可写的虚拟机参数值)。

注:在JDK 6中, jinfo对于Windows平台功能仍然有较大限制,只提供了最基本的-flag选项。

1.3.4、参数

no option 输出全部的参数和系统属性
-flag name 输出对应名称的参数
-flag [+|-]name 开启或者关闭对应名称的参数
-flag name=value 设定对应名称的参数
-flags 输出全部的参数
-sysprops 输出系统属性

1.3.5、使用

  • jinfo pid

  • jinfo -flag name pid

  • jinfo -flag [+|-]name pid

  • jinfo -flag name=value pid

  • jinfo -flags pid

  • jinfo -sysprops pid

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

1.4.1、命令

jmap [option] vmid

1.4.2、作用

1.4.3、使用场景

1.4.4、参数

1.4.5、使用

1.5、jmap Java内存映像工具

1.5.1、命令

1.5.2、作用

生成堆转储快照,与jhat配合使用

1.5.3、使用场景

1.5.4、参数

1.5.5、使用

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

1.6.1、命令

1.6.2、作用

分析jmap生成的堆转储快照

1.6.3、使用场景

1.6.4、参数

1.6.5、使用

二、JVM可视化工具

2.1、jconsole Java监视与管理控制平台

2.2、jvisualvm 多合-故障处理工具

2.3、jmc 可持续在线的监控工具