赞
踩
恰当地使用虚拟机故障处理、分析的工具可以提升我们分析数据、定位并解决问题的效率。
JDK的bin目录中有java.exe、javac.exe这两个命令行工具,还有各种小工具,除了编译和运行Java程序外,打包、部署、签名、调试、监控、运维等各种场景都可能会用到它们。
可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID,功能比较单一,但它绝对是使用频率最高的JDK命令行工具。
jps还可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,参数hostid为RMI注册表中
注册的主机名。
是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程[1]虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据,在没有GUI图形界面、只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的常用工具。
是实时查看和调整虚拟机各项参数。使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表,使用jinfo的-flag选项进行查询未被显式指定的参数的系统默认值。
jmap(Memory Map for Java)命令用于生成堆转储快照,还可以查询finalize执行队列、Java堆和方法区的详细信息,如空间使用率、当前用的是哪种收集器等。
jhat内置了一个微型的HTTP/Web服务器,生成堆转储快照的分析结果后,可以在浏览器中查看。耗时而且极为耗费硬件资源,分析功能相对来说比较简陋。
用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件),生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间挂起等,都是导致线程长时间停顿的常见原因。
在高版本的JDK中,这些工具大多已有了功能更为强大的替代品,譬如JCMD、JHSDB的命令行
模式,但使用方法也是相似的,无论JDK发展到了什么版本,学习这些基础的工具命令并不会过时和浪费。
JHSDB是一款基于服务性代理(Serviceability Agent,SA)实现的进程外调试工具。服务性代理是HotSpot虚拟机中一组用于映射Java虚拟机运行信息的、主要基于Java语言(含少量JNI代码)实现的API集合。在实际开发、学习时,可以用它来调试虚拟机进程或者dump出来的内存转储快照。
是一款基于JMX(Java Manage-ment Extensions)的可视化监视、管理工具。它的主要功能是通过JMX的MBean(Managed Bean)对系统进行信息收集和参数动态调整。JMX是一种开放性的技术,不仅可以用在虚拟机本身的管理上,还可以运行于虚拟机之上的软件中。虚拟机对JMX
MBean的访问也是完全开放的,可以使用代码调用API、支持JMX协议的管理控制台,或者其他符合JMX规范的软件进行访问。
是功能最强大的运行监视和故障处理程序之一,它除了常规的运行监视、故障处理外,还将提供其他方面的能力,譬如性能分析(Profiling)。VisualVM还有一个很大的优点:不需要被监视的
程序基于特殊Agent去运行,因此它的通用性很强,对应用程序实际性能的影响也较小,使得它可以直接应用在生产环境中。这个优点是JProfiler、YourKit等第三方工具无法与之媲美的。
现在的JMC不仅可以下载到独立程序,更常见的是作为Eclipse的插件来使用。JMC与虚拟机之间同样采取JMX协议进行通信,JMC一方面作为JMX控制台,显示来自虚拟机MBean提供的数据;另一方面作为JFR的分析工具,展示来自JFR的数据。
在HotSpot的研发过程中,开发团队曾经编写(或者收集)过不少虚拟机的插件和辅助工
具,它们存放在HotSpot源码hotspot/src/share/tools目录下,包括(含曾经有过但新版本中已被移除的):
Ideal Graph Visualizer:用于可视化展示C2即时编译器是如何将字节码转化为理想图,然后转化为机器码的。
·Client Compiler Visualizer:用于查看C1即时编译器生成高级中间表示(HIR),转换成低级中间表示(LIR)和做物理寄存器分配的过程。
·MakeDeps:帮助处理HotSpot的编译依赖的工具。
·Project Creator:帮忙生成Visual Studio的.project文件的工具。
·LogCompilation:将-XX:+LogCompilation输出的日志整理成更容易阅读的格式的工具。
·HSDIS:即时编译器的反汇编插件。
灵活使用这些工具,可以为处理问题带来很大的便利。除了本章涉及的OpenJDK中自带的工具之外,还有很多其他监控和故障处理工具,如何进行监控和故障诊断,这并不是《Java虚拟机规范》中定义的内容,而是取决于虚拟机实现自身的设计。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。