JDK开发工具中总会包含一些命令行工具,其中有一部分工具用于监视虚拟机和故障处理。这些工具发挥稳定以及性能强大,总能在应用程序吸能问题,故障分析等方面起到举足轻重的作用。
其中,jps主要作用是显示指定系统内所有的虚拟机进程。Jstat用于收集虚拟机各方面的运行数据。Jinfo显示虚拟机配置信息。Jmap生成虚拟机的内存转储快照。Jhat用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果。Jstack显示虚拟机的线程快照。
Jsp可以列出正在运行的虚拟机进程民兵显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID。
jstat可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
jinfo实时地查看和调整虚拟机各项参数,使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表,使用jinfo的-flag选项进行查询未被显式指定的参数的系统默认值。
jmap命令用于生成堆转储快照,可以查询finalize执行队列、Java堆和永久代的详细信息。
jhat与jmap搭配使用,来分析jmap生成的堆转储快照。jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。
jstack用于生成虚拟机当前时刻的线程快照。
HSDIS是虚拟机JIT编译代码的反汇编插件。
JDK中除了提供大量的命令行工具外,还有两个功能强大的可视化工具:JConsole和VisualVM。
JConsole是是一种基于JMX的可视化监视、管理工具。它管理部分的功能是针对JMX MBean进行管理。过程如下:
1.启动JConsole 2.内存监控 3.线程监控
VisualVM是功能强大的运行监视和故障处理程序。它可以做到以下内容:
1.显示虚拟机进程以及进程的配置、环境信息。
2.监视应用程序的CPU、GC、堆、方法区以及线程的信息。
3.dump以及分析堆转储快照。
4.方法级的程序运行性能分析,找出被调用最多、运行时间最长的方法。
5.离线程序快照。