《深入理解Java虚拟机》读书笔记----虚拟机性能监控和故障处理工具

240 阅读4分钟

前言:本篇文章是《深入理解Java虚拟机》读书笔记第三篇章,本篇文章并非JVM的重点知识,了解即可。 点击跳转第二篇

虚拟机性能监控和故障处理工具

基础故障处理工具

bin目录

JDK的bin目录下有java.exe、javac.exe这两个命令行工具,除了编译和运行Java程序外,打包、部署、签名、调试、监控、运维等各种场景都可能会用到它们

JPS

JPS是虚拟机进程状况工具,全程JVM Process Status Tool。它可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一 ID。

命令格式

jps [ options ] [ hostid ]

执行示例

jps -l
2388 D:\Develop\glassfish\bin\..\modules\admin-cli.jar 2764 com.sun.enterprise.glassfish.bootstrap.ASMain 3788 sun.tools.jps.Jps

jstat

jstat是用于监视虚拟机各种运行状态信息的命令行工具。全称是JVM Statistics Monitoring Tool。可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据。

命令格式

jstat [ option vmid [interval[s|ms] [count]] ]

如果是本地虚拟机进程,VMID与LVMID 是一致的;如果是远程虚拟机进程,那VMID的格式应当是

[protocol:][//]lvmid[@hostname[:port]/servername]

参数interval和count 代表查询间隔和次数,如果省略这2个参数,说明只查询一次。假设需要每250 毫秒查询一次进程2764垃圾收集状况,一共查询20次,那命令应当是

jstat -gc 2764 250 20

选项option代表用户希望查询的虚拟机信息,主要分为三类:类加载、垃圾收集、运行期编译状况。

image-20210731161021108

jinfo

是Java配置信息工具。作用是实时查看和调整虚拟机各项参数。

jmap

是Java内存映像工具。用于生成堆转储快照

jhat

是虚拟机堆转储快照分析工具。与jmap搭配使用,来分析jmap生成的堆转储快照。

jstack

是Java堆栈跟踪工具。用于生成虚拟机当前时刻的线程快照

image-20210731161236221

可视化故障处理工具

JHSDB

JDK中提供了JCMD和JHSDB两个集成式的多功能工具箱,它们不仅整合了所有 基础工具所能提供的专项功能,而且由于有着“后发优势”,能够做得往往比之前的老工具们更好、更强大。

JHSDB是一款基于服务性代理(Serviceability Agent,SA)实现的进程外调试工具。

使用以下命令进入JHSDB的图形化模式,并使其附加进程11180:

jhsdb hsdb --pid 11180

JConsole

JConsole(Java Monitoring and Management Console)是一款基于JMX(Java Manage-ment Extensions)的可视化监视、管理工具。它的主要功能是通过JMX的MBean(Managed Bean)对系统进 行信息收集和参数动态调整。

VisualVM

VisualVM(All-in-One Java Troubleshooting Tool)是功能最强大的运行监视和故障处理程序之一, 曾经在很长一段时间内是Oracle官方主力发展的虚拟机故障处理工具。

它除了常规的运行监视、故障处理外,还可以做性能分析等工作。因为它的通用性很强,对应用程序影响较小,所以可以直接接入到生产环境中。

VisualVM的插件可以手工进行安装,在网站上下载nbm包后,点击“工具->插件->已下载”菜单,然后在弹出对话框中指定nbm包路径便可完成安装。

Java Mission Control

JMC最初是BEA公司的产品,因此并没有像VisualVM那样一开始就基于自家的Net-Beans平台来开发,而是选择了由IBM捐赠的Eclipse RCP作为基础框架,现在的JMC不仅可以下载到独立程序,更常见的是作为Eclipse的插件来使用。JMC与虚拟机之间同样采取JMX协议进行通信,JMC一方面作为 JMX控制台,显示来自虚拟机MBean提供的数据;另一方面作为JFR的分析工具,展示来自JFR的数据。