一、如何制作线程堆栈
a.本地线程与java线程对应
本地线程: 是指java线程对应的虚拟机中的本地线程,java语言中的线程是依附于JVM虚拟机中的本地线程来运行,实际是本地线程运行java线程代码。java代码中创建一个thread,虚拟机在运行期间就会创建一个对应的本地线程,而这个本地线程才是真正的线程实体
打印java虚拟机本地线程的命令:
ps -ef|grep java 获取java进程ID
使用pstack获得JAVA虚拟机本地线程的堆栈
虚拟机本地线程
其中的黄色部分即为java线程中的nid值,线程快照中的NID因为16进制表示,可以将其转换十进制表示,通本地线程中的线程转换成十六进制后,与线程快照中的十六进制进行对比,如果相同即为同一线程。
如还没懂,在来一幅图进行说明:
java虚拟机本地线程与java线程对应
从上图可知,java虚拟本地线程与java线程指的是同一东西,只有本地线程才是真正的线程实体,java实际上指的就是这个本地线程的,它并不是另外存在的实体,这一点需要大家明白。
b:使用jstack命令制作线程快照:
jstack java线程ID,如下图,图中的内容只截取了部分的线程

线程快照

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐