JVM<汇总一个JVM进程中的线程的状态>

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gpwner/article/details/73651027

1. 首先通过Jps命令查看所有的JVM进程

jps是jdk提供的一个查看当前Java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。非常简单实用。

   命令格式:jps [options ] [ hostid ] 

   [options]选项 :
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method 
-m:输出main method的参数 
-l:输出完全的包名,应用主类名,jar的完全路径名 
-v:输出jvm参数 
-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件 
-Joption:传递参数到vm,例如:-J-Xms512m
[root@master ~]# jps
23089 HMaster
2357 Worker
2535 NameNode
2999 ResourceManager
49879 Kafka
22938 QuorumPeerMain
2811 SecondaryNameNode
23227 HRegionServer
2269 Master
2637 DataNode
99436 Jps
3118 NodeManager

2.选取其中任意一个JVM进程来查看

这里以pid为23089的进程来查看

使用jstack 查看23089进程所有状态,然后重定向到dump文件

jstack 23089 > dump

过滤出线程的状态和总数信息

grep java.lang.Thread.State dump | awk '{print$2$3$4$5}' |sort |uniq -c

得到结果:

      1 BLOCKED(onobjectmonitor)
      26 RUNNABLE
      6 TIMED_WAITING(onobjectmonitor)
      3 TIMED_WAITING(parking)
      3 TIMED_WAITING(sleeping)
      3 WAITING(onobjectmonitor)
      67 WAITING(parking)

数字数进程数量,之后是进程状态
这里写图片描述

猜你喜欢

转载自blog.csdn.net/Gpwner/article/details/73651027