JVM 问题排查过程中的常用命令

JVM 问题排查过程中的常用命令

jps(看进程号)

jps [ options ] [ hostid ]
列出指定主机上的所有虚拟机(一个 Java 应用就是一个虚拟机,一个虚拟机就是一个进程),该命令仅限于报告它具有访问权限的 jvm 的信息。其中,hostid 可以包含可选组件,表示通信协议、端口号和其他具体实现数据。
如果 jps 命令在没有指定 hostid 的情况下运行,那么它将在本地主机上搜索已安装的 jvm。如果以 hostid 开头,则使用指定的协议和端口在指定的主机上搜索 jvm,前提是 jstatd 进程在目标主机上运行。jps 命令报告在目标系统上发现的每个 JVM 的标识符 (或 lvmid)。lvmid 通常是操作系统中 JVM 进程的进程 ID,但不一定是这样。在没有选项的情况下,jps 列出了每个 Java 应用程序的 lvmid,后面跟着应用程序类名或 jar 文件名的简短形式。类名或 JAR 文件名的缩写形式省略了类的包信息或 JAR 文件的路径信息。
jps 命令使用 Java 启动器(Java launcher)查找传递给主方法的类名和参数。如果目标 JVM 是用自定义启动器启动的,那么类或 JAR 文件名和主方法的参数都不可用。在这种情况下,jps 命令为类名或 JAR 文件名以及 main 方法的参数输出字符串 Unknown。

选项(options):以下测试结果都是在一个只运行了一个 tomcat 的服务器上得出的

剩下的看官方文档

jinfo(看配置)

jinfo [ option ] pid
jinfo [ option ] executable core
jinfo [ option ] [ servier-id ] remote-hostname-or-IP
其中:

剩下的看官方文档

jmap(看堆内存)

jmap [ options ] pid
jmap [ options ] executable core
jmap [ options ] [ pid ] server-id@ ] remote-hostname-or-IP
其中

配置项:

剩下的看官方文档 jmap.txt

jhat(分析内存文件用页面展示)

jhat [ options ] heap-dump-file
其中:

jstack(看栈帧)

jstack [ options ] pid
jstack [ options ] executable core
jstack [ options ] [ server-id@ ] remote-hostname-or-IP
其中,

jstat (JVM 统计数据,常用于看 GC 信息)

jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]
其中:

jstat 命令显示一个已测试的 Java HotSpot VM 的性能统计数据。目标 JVM 由其虚拟机标识符或 vmid 选项标识。
通用选项:

jstatd(RMI 远程方法调用应用程序)

jstatd [ options ]
jstatd 命令是一个RMI 服务器应用程序,它监视被检测的 Java HotSpot 虚拟机的创建和终止,并提供一个接口,使远程监视工具能够连接到运行在本地主机上的 jvm。(这里的主机指的是被远程监控的主机)
jstatd 服务器需要在本地主机上进行 RMI 注册。jstatd 服务器尝试通过默认端口连接到 RMI 注册表上,或者使用 -p port 选项指定的端口上。如果没有找到 RMI 注册表,则在 jstatd 应用程序中创建一个,该应用程序绑定到由 -p port 选项指示的端口,或者在省略 -p port 选项时绑定到默认的 RMI 注册表端口。通过指定 -nr 选项,可以停止创建内部 RMI 注册表。

选项: