--- title: JDK监控和故障处理工具总结 category: Java tag: - JVM --- ## JDK 命令行工具 这些命令在 JDK 安装目录下的 bin 目录下: - **`jps`** (JVM Process Status): 类似 UNIX 的 `ps` 命令。用于查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息; - **`jstat`**(JVM Statistics Monitoring Tool): 用于收集 HotSpot 虚拟机各方面的运行数据; - **`jinfo`** (Configuration Info for Java) : Configuration Info for Java,显示虚拟机配置信息; - **`jmap`** (Memory Map for Java) : 生成堆转储快照; - **`jhat`** (JVM Heap Dump Browser) : 用于分析 heapdump 文件,它会建立一个 HTTP/HTML 服务器,让用户可以在浏览器上查看分析结果。JDK9 移除了 jhat; - **`jstack`** (Stack Trace for Java) : 生成虚拟机当前时刻的线程快照,线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。 ### `jps`:查看所有 Java 进程 `jps`(JVM Process Status) 命令类似 UNIX 的 `ps` 命令。 `jps`:显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一 ID(Local Virtual Machine Identifier,LVMID)。`jps -q`:只输出进程的本地虚拟机唯一 ID。 ```powershell C:\Users\SnailClimb>jps 7360 NettyClient2 17396 7972 Launcher 16504 Jps 17340 NettyServer ``` `jps -l`:输出主类的全名,如果进程执行的是 Jar 包,输出 Jar 路径。 ```powershell C:\Users\SnailClimb>jps -l 7360 firstNettyDemo.NettyClient2 17396 7972 org.jetbrains.jps.cmdline.Launcher 16492 sun.tools.jps.Jps 17340 firstNettyDemo.NettyServer ``` `jps -v`:输出虚拟机进程启动时 JVM 参数。 `jps -m`:输出传递给 Java 进程 main() 函数的参数。 ### `jstat`: 监视虚拟机各种运行状态信息 jstat(JVM Statistics Monitoring Tool) 使用于监视虚拟机各种运行状态信息的命令行工具。 它可以显示本地或者远程(需要远程主机提供 RMI 支持)虚拟机进程中的类信息、内存、垃圾收集、JIT 编译等运行数据,在没有 GUI,只提供了纯文本控制台环境的服务器上,它将是运行期间定位虚拟机性能问题的首选工具。 **`jstat` 命令使用格式:** ```powershell jstat -