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

jinfo 选项:

选项 作用
-flag <name>   显示指定 name 的虚拟机参数  
-flag [+|-]<name>   启用或禁用指定 name 的虚拟机参数  
-flag <name>=<value>   设置指定 name 的虚拟机参数值  
-flags   显示所有的虚拟机参数  
-sysprops   显示虚拟机进程的系统变量,即 System.getProperties() 的内容  
  显示所有虚拟机参数及系统变量  
4、jmap:Java 内存映像工具

jmap 作用:
主要用于生成堆转储快照(一般称为 heapdump 或 dump 文件)。除此之外,还可以查询 finalize 执行队列、Java 堆和永久代的详细信息。

jmap 命令格式:

jmap [option] <vmid>

option:选项。

vmid:虚拟机进程唯一 ID。

jmap 执行样例:

root@█████████:~# jmap -dump:format=b,file=test.bin 20498 Dumping heap to /root/test.bin ... Heap dump file created

jmap 选项:

选项 作用
-dump   生成 Java 堆转储快照。格式为:-dump:[live,]format=b,file=<filename>,live 子参数表示是否只 dump 出存活的对象  
-finalizerinfo   显示在 F-Queue 中等待 Finalizer 线程执行 finalize 方法的对象  
-heap   显示 Java 堆详细信息,如使用哪种回收器、参数配置、分代状况等  
-histo   显示堆中对象统计信息,包括类、实例数量、合计容量  
-permstat   以 ClassLoader 为统计口径显示永久代内存状况,JDK1.8 改为 -clstats  
-F   当虚拟机进程对 -dump 选项没有响应时,可使用该选项强制生成 dump 快照  
5、jhat:虚拟机堆转储快照分析工具

jhat 作用:
用于分析 jmap 生成地堆转储快照。jhat 内置了一个微型的 HTTP/HTML 服务器,生成 dump 文件分析结果后,可在浏览器中查看。

jhat 命令格式:

jhat [option] <file>

option:选项。

file:堆转储快照文件。

jhat 执行样例:

root@█████████:~# jhat test.bin Reading from test.bin... Dump file created Tue Dec 17 21:49:26 CST 2019 Snapshot read, resolving... Resolving 979375 objects... Chasing references, expect 195 dots................................................................................................................................................................................................... Eliminating duplicate references................................................................................................................................................................................................... Snapshot resolved. Started HTTP server on port 7000 Server is ready.

在浏览器中输入 地址:7000 即可查看分析结果。

6、jstack:Java 堆栈跟踪工具

jstack 作用:
用于生成虚拟机当前时刻的线程快照(一般称为 threaddump 或 javacore 文件)。线程快照是当前虚拟机内每一条线程正在执行的方法堆栈的集合。

生成线程快照的主要目的是定位线程出现长时间停顿的原因。当线程出现停顿时,通过 jstack 查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者等待着什么资源。

jstack 命令格式:

jstack [option] <vmid>

option:选项。

vmid:虚拟机进程唯一 ID。

jstack 执行样例(部分结果):

root@█████████:~# jstack -l 20498 2019-12-17 22:08:31 Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.141-b15 mixed mode): "Attach Listener" #7966 daemon prio=9 os_prio=0 tid=0x00007f0a54037800 nid=0xf15 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE Locked ownable synchronizers: - None ...

jstack 选项:

选项 作用
-F   当正常输出的请求不被响应时,强制输出线程堆栈  
-l   除堆栈外,显示关于锁的附加信息  
-m   如果调用到本地方法的话,可以显示 C/C++ 的堆栈  
二、JDK的可视化工具

JDK 提供了两个功能强大的可视化工具:JConsole 和 VisualVM。

1、JConsole:Java 监视与管理控制台 (1)启动 JConsole

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

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