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

本文介绍了如何使用JDK自带的jps和jstack工具来查看和诊断Java进程。通过实例演示了如何获取JVM进程信息及线程状态,帮助开发者有效定位和解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值