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

正文 一、JDK 的命令行工具

JDK 的 bin 目录下提供了一些用于监视虚拟机和故障处理的命令行工具。

名称 主要作用
jps   JVM Process Status Tool,显示正在运行的虚拟机进程  
jstat   JVM Statistics Monitoring Tool,收集虚拟机各方面的运行数据  
jinfo   Configuration Info for Java,显示虚拟机配置信息  
jmap   Memory Map for Java,生成虚拟机的内存转储快照(heapdump 文件)  
jhat   JVM Heap Dump Browser,用于分析 heapdump 文件,它会建立一个 HTTP/HTML 服务器,可在浏览器上查看分析结果  
jstack   Stack Trace for Java,显示虚拟机的快照进程  
1、jps:虚拟机进程状况工具

jps 作用:
列出正在运行的虚拟机进程,并显示虚拟机进程执行主类(main() 函数所在的类)名称以及进程的本地虚拟机唯一 ID(Local Virtual Machine Identifier,LVMID)。对于本地虚拟机进程,LVMID 与操作系统进程 ID(PID)一致。

jps 命令格式:

jps [options] [hostid]

options:选项,可多个。

hostid:jps 可以通过 RMI 协议查询开启了 RMI 服务的远程虚拟机进程状态,hostid 为 RMI 注册表中注册的主机名。

jps 执行样例:

root@█████████:~# jps -l 16657 halo-latest.jar 20498 org.apache.catalina.startup.Bootstrap 16669 sun.tools.jps.Jps

jps 选项:

选项 作用
-q   只输出 LVMID,省略主类的名称  
-m   输出虚拟机进程启动时,传递给主类 main() 函数的参数  
-l   输出主类的全名,如果进程执行的是 Jar 包,输出 Jar 路径  
-v   输出虚拟机进程启动时 JVM 参数  

PS: 也不知道是不是我的打开方式不对,在 Win7、Win10 下用 JDK1.6、1.7、1.8 测试时,输出的是 Jar 文件名,而不是 Jar 路径。

2、jstat:虚拟机统计信息监视工具

jstat 作用:
用于监视虚拟机各种运行状态信息。可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据。

jstat 命令格式:

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

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

vmid:虚拟机唯一 ID(VMID),如果是本地虚拟机进程,那么 VMID 与 LVMID 一致,如果是远程虚拟机进程,那么 VMID 的格式为:[protocol:][//]lvmid[@hostname][:port]/servername。

interval:查询间隔。

count:查询次数。同时省略 interval 和 count 时,表示只查询一次。

jstat 执行样例:

root@█████████:~# jstat -gcutil 20498 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 14.14 0.00 91.33 96.52 96.90 93.32 1210 7.328 6 0.536 7.864

jstat 选项:

选项 作用
-class   显示类装载、卸载数量、总空间以及类装载所耗费的时间  
-gc   显示 Java 堆状况,包括各个区域的容量、已用空间、GC 时间合计等  
-gccapacity   显示 Java 堆各个区域的最大、最小(初始化)容量  
-gcutil   显示 Java 堆各个区域的已使用空间占总空间的百分比  
-gccause   与 -gcutil 功能一样,但会额外输出导致上一次 GC 产生的原因  
-gcnew   显示新生代 GC 状况  
-gcnewcapacity   显示新生代最大、最小(初始化)容量  
-gcold   显示老年代 GC 状况  
-gcoldcapacity   显示老年代最大、最小(初始化)容量  
-gcpermcapacity   显示永久代最大、最小(初始化)容量  
-compiler   显示 JIT 编译器编译过的方法、耗时等信息  
-printcompilation   显示已被 JIT 编译的方法  
3、jinfo:Java 配置信息工具

jinfo 作用:
实时地查看和调整虚拟机各项参数。

jinfo 命令格式:

jinfo [option] <pid>

option:选项。

pid:虚拟机进程 ID。

jinfo 执行样例:

root@█████████:~# jinfo -flag MaxHeapSize 20498 -XX:MaxHeapSize=260046848

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwgfwx.html