概述
jstack [ options ] pid
- options:命令行选项
- pid:进程ID
jstack命令可以用来查看线程堆栈。根据堆栈信息我们可以定位程序出现的问题,例如CPU偏高等问题。本文使用的是JDK10,不同版本间可能存在差异。
options
不添加options的时候,默认查看线程堆栈信息
[root@izbp1chtb8a3vd2mzvuawlz target]# jstack 13969|more
2018-09-02 22:01:27
Full thread dump Java HotSpot(TM) 64-Bit Server VM (10.0.2+13 mixed mode):
Threads class SMR info:
_java_thread_list=0x00007fc06c0014f0, length=31, elements={
0x00007fc0a00af800, 0x00007fc0a00b2000, 0x00007fc0a00c6800, 0x00007fc0a00c8000,
0x00007fc0a00ca000, 0x00007fc0a00cb800, 0x00007fc0a0148000, 0x00007fc0a0152800,
0x00007fc0a0b1e800, 0x00007fc0a071a000, 0x00007fc0a0552000, 0x00007fc0a08a3800,
0x00007fc0a07f7800, 0x00007fc0a07a5000, 0x00007fc0a05fd800, 0x00007fc0a09dd800,
0x00007fc0a06c6800, 0x00007fc0a0a41800, 0x00007fc0a0a3e000, 0x00007fc0a0795800,
0x00007fc0a04b7800, 0x00007fc0a05eb000, 0x00007fc0a0246000, 0x00007fc0a0769000,
0x00007fc0a000f000, 0x00007fc05c3df800, 0x00007fc05c3ef800, 0x00007fc05c3f0800,
0x00007fc05c142000, 0x00007fc05c143800, 0x00007fc06c002800
}
"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007fc0a00af800 nid=0x3694 waiting on condition [0x00007fc085265000]
java.lang.Thread.State: RUNNABLE
at java.lang.ref.Reference.waitForReferencePendingList(java.base@10.0.2/Native Method)
at java.lang.ref.Reference.processPendingReferences(java.base@10.0.2/Reference.java:174)
at java.lang.ref.Reference.access$000(java.base@10.0.2/Reference.java:44)
at java.lang.ref.Reference$ReferenceHandler.run(java.base@10.0.2/Reference.java:138)
"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007fc0a00b2000 nid=0x3695 in Object.wait() [0x00007fc085164000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(java.base@10.0.2/Native Method)
- waiting on <0x00000000f5bc0938> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(java.base@10.0.2/ReferenceQueue.java:151)
- waiting to re-lock in wait() <0x00000000f5bc0938> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(java.base@10.0.2/ReferenceQueue.java:172)
at java.lang.ref.Finalizer$FinalizerThread.run(java.base@10.0.2/Finalizer.java:216)