本文主要是介绍JVM 中jstack命令详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Java程序问题定位时线程栈信息是一个重要线索,如下图:
“Thread-1” prio=6 tid=0x05b84800 nid=0x660 waiting for monitor entry [0x063bf000]java.lang.Thread.State:Blocked (on object monitor)at com.road.threadDead.ThreadDead.run(ThreadDead.java:40)-waiting to lock<0x29617b0>(a java.lang.Object)-locked<0x29e617b8>(a java.lang.Object)at java.lang.Thread.run(Thread.java:724)Locked ownable synchronizers-None“Thread-0” prio=6 tid=0x05b84000 nid=0xfb8 waiting for monitor entry[0x0613f000] java lang.Thread.State:BLOCKED(on object monitor)at com.road.threadDead.ThreadDead.run(ThreadDead.java:29)-waiting to lock <0x29e617b8>(a java.lang.Object)-locked <0x29e617b0>( a java.lang.Object)at java.lang.Thread.run(Thread.java:724)Locked ownable synchronize-None
Thread-1:是线程名称。
tid:Java的线程ID。
nid:每一个Java线程在操作系统层面都与一个线程对应,这个线程ID就是nid。
prio:线程优先级。
waiting for monitor entry[0x063bf000]:等待获取对象锁,而这个对象正好由thread-0所持有,所以这两个线程实际上是互锁,也就是死锁。
[0x063bf000]:线程栈起始地址。
这篇关于JVM 中jstack命令详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!