1.概述
给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括但不限于异常堆栈、虚拟机运行日志、垃圾收集器日志、线程快照(threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等。恰当地使用虚拟机故障处理、分析的工具可以提升我们分析数据、定位并解决问题的效率。
基础故障处理工具
JDK的bin目录文件下的工具主要是用于监视虚拟机运行状态和进行故障处理。根据软件可用性和授权的不同,可以把他们划分为三类:商业授权工具、正式支持工具和实验性工具。
主要指令
jps:主要用于输出虚拟机进程状况信息
jstat:主要用于虚拟机统计信息监视
jinfo:主要用于实时查看和调整虚拟机各项参数
jmap:主要用于生成堆转储快照,堆转储快照即某个时间点应用程序内存的快照
jhat:与jamp搭配使用,用于分析jamp生成的堆转储快照
jstack:用于生成虚拟机当前时刻的线程快照,线程快照即当前虚拟机内每一条线程正在执行的方法堆栈的集合。
可视化故障处理工具
四种可视化工具
使用可视化工具可以更加便捷地进行故障诊断和调试。这类工具主要包括JConsole、JHSDB、VisualVM和JMC四个。
JHSDB是一款服务性代理(Serviceability Agent,SA)实现的进程外调试工具。
JConsole (Java Monitoring and Management Console)是一款基于JMX (Java Manage-mentExtensions)的可视化监视、管理工具。
VisualVM(All-in-One Java Troubleshooting Tool)是功能最强大的运行监视和故障处理程序之一。
Java Mission Control:可持续在线的监控工具
4.HotSpot虚拟机插件及工具
Ideal Graph Visualizer:用于可视化展示C2即时编译器是如何将字节码转化为理想图,然后转化为机器码的。
Client Compiler Visualizer:用于查看C1即时编译器生成高级中间表示(HIR),转换成低级中间表示(LIR)和做物理寄存器分配的过程。
MakeDeps:帮助处理HotSpot的编译依赖的工具。
Project Creator:帮忙生成Visual Studio的.project文件的工具。
LogCompilation:将-XX:+LogCompilation输出的日志整理成更容易阅读的格式的工具。·HSDIS:即时编译器的反汇编插件。