当运行jstack时,一个stack的内容如下:
Full thread dump Java HotSpot(TM) 64-Bit Server VM (23.25-b01 mixed mode):
"Attach Listener" daemon prio=10 tid=0x00000000029eb800 nid=0x5cac waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
tid, Java memory address of its internal Thread control structure.
nid, native thread id. 每一个nid对应于linux下的一个tid, 即lwp (light weight process, or thread).
linux下的lwp可以在/proc/pid/task/下查看。
需要注意的是,jstack中的nid是十六进制数,task目录下为十进制数,需要转换一致后才可以比较。
linux下的lwp也可以通用ps来查看
ps -mp pid号 -o THREAD,tid,lwp,nlwp,time,rss,size,%mem
顺便说一句,上面ps语句中的WCHAN的含义:
WCHAN : 若该进程在睡眠,则显示睡眠中的系统函数名
相关推荐
本文将详细介绍`JStack`的使用方法及其在分析Java线程堆栈中的应用。 #### 二、JStack简介 `JStack`是Java Development Kit (JDK)的一部分,用于生成正在运行的Java应用程序的线程快照。这些快照提供了关于每个...
用jstack分析CPU占用率高的原因 1 top -H -p pid 2 linux printf命令将10进制转换为16进制 3在jstack中找到相应的堆栈信息jstack pid grep 'nid' -C5 –color
8. 在之前保存的 JVM 进程的栈信息文件中找到 nid=<PID> 的线程的栈信息。 问题解决方案 通过分析代码,发现 com.zatech.bank.framework.log.pattern.ZaFileOfCallerConverter.convert 方法占用了大量 CPU 资源,该...
例如,`jstack pid | grep nid -C10 --color`会显示相关代码所在的文件和行数。在某些情况下,可能需要将堆栈信息保存到文件中进行离线分析,可以使用`jstack pid > jstack.txt`来生成dump文件。 在排查CPU问题时,...
在这里,我们输入`jstack 29609`,查找nid=0x7450(或者其他高CPU占用线程对应的十六进制ID)的相关堆栈信息。这些信息会显示出每个线程当前执行的方法,以及调用堆栈,这对于定位问题非常关键。 分析`jstack`输出...
这里使用`jstack`命令将PID为3481的Java进程的所有线程信息导出到文件`3481.dump`中,便于后续分析。 ##### 3. 使用`top`查看线程CPU使用情况 ``` [root@GXCWMIS04~]$ top -H -p 3481 ``` 通过`top -H -p 3481`...
下面通过一个实例来说明如何使用`jstack`来找出某个Java进程中CPU占用最高的线程并定位其堆栈信息: 1. **找出Java进程ID**:假设我们的Java应用名为`mrf-center`,可以通过`ps -ef | grep mrf-center | grep -v ...
接着,我们可以使用 jstack pid |grep 'nid' -C5 –color 命令来找到 nid 的堆栈信息。通过分析堆栈信息,我们可以确定 CPU 故障的来源。 二、GC 故障排查 GC 故障排查是 Java 线上故障排查的另一个重要步骤。我们...
将PID转换为16进制后,通过`jstack pid | grep 'nid' -C5 --color`查看堆栈详情。重点关注`WAITING`和`TIMED_WAITING`状态的线程,因为它们可能表示阻塞或等待资源,而`BLOCKED`状态则通常与锁有关。可以使用`cat ...
问题描述: cpu占用过高,服务器卡死,问题排查 ...3、使用 printf ‘%x\n’ PID (PID为上一步中获取到的线程号)转换成对应的16进制PID 5c7e(为什么要转换,因为用jstack工具导出的信息里面线程对应的nid是1
Java线程堆栈是一种强大的诊断工具,能够帮助开发者快速定位多线程应用程序中的问题。通过分析线程堆栈,可以找到系统中各种问题的根源,如系统无缘无故CPU过高、系统挂起、系统运行越来越慢、性能瓶颈、线程死锁、...