深入理解Java虚拟机(五)——JDK故障处理工具
进程状况工具:jps
jps(JVM Process Status Tool)
作用
- 用于虚拟机中正在运行的所有进程。
- 显示虚拟机执行的主类名称以及这些进程的本地虚拟机唯一ID。
- 可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,参数hostid为RMI注册表中注册的主机名
特点
使用频率最高的命令工具,需要通过它来查询进程的ID,从而进行下一步监控。
统计信息监视工具:jstat
jstat(JVM Statistics Monitoring Tool)
作用
- 用于监视虚拟机各种运行状态信息,可以显式本地或远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据。
- 可以显示堆内各个分区的使用率。
Java配置信息工具:jinfo
jinfo(Configuration Info for Java)
作用
- 实时查看和调整虚拟机各项参数。
- 如果想知道未被显式指定的参数的系统默认值,可以通过jinfo的-flag查询。
- 如果想把虚拟机进程的System.getProperties()的内容打印出来,可以通过-sysprops。
- 具有运行期修改部分参数值的能力。
Java内存映像工具:jmap
jmap(Memory Map for Java)
作用
- 用于生成堆转储快照。
- 还可以查询finalize执行队列、Java堆和方法区的详细信息。
堆转储快照分析工具:jhat
jhat(JVM Heap Analysis Tool)
作用
- 与jmap搭配使用,用于分析jmap生成的堆转储快照。
- 内置web服务器,可以用过浏览器查看结果。
特点
一般人不会直接使用jhat来分析快照文件,主要原因:
- 不会在部署应用程序的服务器上进行直接分析快照,因为这样会浪费本地的计算资源。
- 该命令分析功能简陋,有其他更全面的工具。
Java堆栈跟踪工具:jstack
jstack(Stack Trace for Java)
作用
- 用于生成虚拟机当前时刻的线程快照,线程快照就是当前运行的每一条线程执行方法的堆栈集合。
- 可以用于定位线程出现长时间停顿的原因。
Java监视与管理控制台:JConsole
JConsole(Java Monitoring and Management Console)是一款基于JMX(Java Manage-ment Extensions)的可视化监视、管理工具。它的主要功能是通过JMX的MBean(Managed Bean)对系统进。
行信息收集和参数动态调整。