Java Command Tools常用用法

一、jps

命令
效果
demo
jps 显示所有jvm进程,常用jps | grep 查看指定进程是否存在
jps -l 显示所有jvm进程与进程启动类全路径名
jps -v 显示所有jvm进程与进程启动的所有jvm配置

二、jstat

命令
效果
demo

jstat -gcutil PID 1000

每一秒打印一次gc统计信息
jstat -gcutil -h5 PID 1000 每一秒打印一次gc统计信息,每5行打印一次header

三、jmap

命令
效果
备注
demo

jmap -heap PID

显示java进程的内存分布情况 会attach到对应的java进程上

注意:-F参数是完全另一套机制,而且对线上影响较大,因此不推荐使用,当出现

Unable to open socket file: target process not responding or HotSpot VM not loaded 
The -F option can be used when the target process is not responding
请检查执行命令的用户和进程启动用户是否同一用户
jmap -histo PID 显示JVM中各个类的内存的分布情况 通常会非常多,可用jmap -histo PID | head -n 100显示top100
jmap -histo:live PID 会进行一次GC,以显示JVM中存活的类的内存的分布情况 注意:会引发一次FGC
jmap -dump:format=b,file=./dump.hprof PID 生成Heap Dump文件

可用VIsualVM等工具进行后续分析

参考:Heap Dump分析

四、jstack

命令
效果
备注
demo

jstack PID

可查看当前各个线程的执行堆栈并给出当前线程的状态,并检测是否发生死锁

本质就是Thread dump,可导入VisualVM进行分析,参考Thread Dump分析

注意:-F参数是完全另一套机制,而且对线上影响较大,因此不推荐使用,当出现

Unable to open socket file: target process not responding or HotSpot VM not loaded 
The -F option can be used when the target process is not responding
请检查执行命令的用户和进程启动用户是否同一用户

 

 

jstack -l PID 显示更详细的Threadd Dump 额外打印锁相关信息 会显示很多
 Locked ownable synchronizers
 

五、jinfo

命令
效果
备注
demo
jinfo PID 打印指定JVM的System Properties与VM Flags 会attach到执行进程上

六、jhat

命令
效果
demo
jhat FilePath 对Heap Dump产生分析报告,会启动一个tomcat,以html的形式展示分析报告

 

常见问题:

1、使用jstack或jmap时出现,请检查是否执行命令的用户和进程启动用户为同一用户

Unable to open socket file: target process not responding or HotSpot VM not loaded 
The -F option can be used when the target process is not responding

 

参考文档:

https://stackoverflow.com/questions/26140182/running-jmap-getting-unable-to-open-socket-file

posted @ 2020-08-22 14:35  nlskyfree  阅读(312)  评论(0编辑  收藏  举报