layout: post title: “JDK-命令行工具介绍2” subtitle: “ "了解jstack的用法"” date: 2016-07-31 18:58:00 author: “Dunno” header-img: “img/post-bg-2015.jpg” tags: - JVM —

目录

背景介绍

线上经常出现各式各样的问题,通过jdk自带的命令行工具,能帮助我们更加快速的定位到故障。

jdk 为我们提供了很多命令行工具,其中经常使用到的有监控工具(jps,jstat,statd)和故障排查工具(jinfo,jhat,jmap,jsadebugd,jstack)

这次我们介绍非常非常常用的命令:jstack

参考资料

http://docs.oracle.com/javase/7/docs/technotes/tools/ https://dzone.com/articles/how-analyze-java-thread-dumps https://gist.github.com/rednaxelafx/843622

jstack命令介绍

jstack 根据指定的端口或者远程debug服务打印出线程栈跟踪信息。

jstack -l 7124 打出pid为7124的线程栈跟踪信息

部分输出:


Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.76-b04 mixed mode):

"Thread-11-EventThread" daemon prio=5 tid=0x00007f8e9d8e0000 nid=0x32327 waiting on condition [0x0000700013bca000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007eef76740> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:494)

   Locked ownable synchronizers:
	- None

"Thread-11-SendThread(10.4.241.128:2181)" daemon prio=5 tid=0x00007f8e9d857000 nid=0x2a33f runnable [0x0000700013ac7000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
	at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:200)
	at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103)
	at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
	- locked <0x00000007eef75488> (a sun.nio.ch.Util$2)
	- locked <0x00000007eef75478> (a java.util.Collections$UnmodifiableSet)
	- locked <0x00000007eef75358> (a sun.nio.ch.KQueueSelectorImpl)
	at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
	at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:349)
	at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)

   Locked ownable synchronizers:
	- None

jstack -l 输出解释