JVM监控及诊断工具(命令行篇)

1. jps: 查看正在运行的Java进程

jps

JVM监控及诊断工具(命令行篇)_第1张图片

8848 表示Jps本身的进程,11380表示idea的进程,820表示Launcher启动类进程 8492表示正在运行的ScannerTest Java进程

2. jstat: 查看JVM统计信息

jstat -class PID(监控Java进程)        

JVM监控及诊断工具(命令行篇)_第2张图片

Loaded表示加载类的个数,Bytes表示加载类所占字节数

Unloaded表示卸载类的个数,Bytes表示卸载类所占字节数

Time表示花费的总体时间

jstat -class PID   interval  (持续监控,以毫秒为单位)

JVM监控及诊断工具(命令行篇)_第3张图片

jstat -class PID   interval  count (指定查询次数)

JVM监控及诊断工具(命令行篇)_第4张图片

jstat -compiler PID  (编译情况)

 

 jstat -compiler PID  (被编译的方法)

jstat -gc PID(GC情况)

s0C:s0区的容量        s1C:s1区的容量       s0U:s0区已使用的容量     s1U:s1区已使用的容量

EC:伊甸园区容量     EU:伊甸园区已使用容量     OC:老年代容量     OU:老年代已使用容量

MC:方法区容量    MU:方法区已使用容量   CCSC:压缩类容量  CCSU:压缩类已使用容量

YGC:发生youngGC次数  YGCT: youngGC花费时间  FGC:fullGC次数 FGCT:fullGC花费时间

CGC: 并发GC次数   CGCT:并发GC花费时间  GCT:GC花费总时间

jstat -gc -t PID interval  count

(持续观察GC情况,通过两次测量间隔和总GC时间增量,可计算出GC时间占运行时间的比例)

JVM监控及诊断工具(命令行篇)_第5张图片

 (若OU呈上涨趋势,说明该Java程序的老年代内存使用量在不断上涨意味着无法回收的对象在不断增加,则可能存在内存泄漏)

 3. jinfo: 查看虚拟机配置参数信息,也可用于调整虚拟机配置参数

jinfo -sysprops PID (查看虚拟机配置参数信息)

JVM监控及诊断工具(命令行篇)_第6张图片

jinfo -flags PID(查看当前进程曾经赋过值的一些参数)

jinfo -flag 具体参数 PID (查看具体参数的值)  

-PrintGCDetails表明该参数未被赋予

jinfo -flag +具体参数 PID(针对boolean类型的参数,可进行添加或删除)

 

+PrintGCDetails表明该参数被赋予

jinfo -flag 具体参数=具体参数值 PID(针对非boolean类型的参数,可进行修改)

JVM监控及诊断工具(命令行篇)_第7张图片

MaxHeapFreeRatio被从100修改到90

4. jmap: 导出内存映像文件及内存使用情况

jmap -dump:format=b,file=[filename].hprof PID  (导出dump文件)

jmap -dump:live,format=b,file=[filename].hprof PID  (导出dump文件,只保留存活对象)

 

JVM监控及诊断工具(命令行篇)_第8张图片

jmap -histo PID(输出堆中对象的统计信息,包括类、实例数量和合计容量)

JVM监控及诊断工具(命令行篇)_第9张图片

5. jstack: 打印JVM中线程快照

jstack PID (记录各线程状态,并分析,当线程出现停顿时使用)

线程1,2是阻塞状态

JVM监控及诊断工具(命令行篇)_第10张图片

分析出现死锁及原因

JVM监控及诊断工具(命令行篇)_第11张图片

 6. jcmd: (多功能工具,用来实现上述除jstat之外所有命令功能)

jcmd -l (列出所有JVM进程) 

JVM监控及诊断工具(命令行篇)_第12张图片

jcmd PID help (针对指定进程,列出所有支持的命令)

JVM监控及诊断工具(命令行篇)_第13张图片

jcmd PID 具体命令 (针对指定进程,显示指令执行数据)

JVM监控及诊断工具(命令行篇)_第14张图片

 

你可能感兴趣的:(JVM,java)