jstack

jstack #

bash
# 列出PID为1234的java进程的各线程运行情况和堆栈信息
jstack -l 1234

输出解释:

  • nid 表示 Java Thread ID

输出样例:

text
2025-03-23 11:06:30
Full thread dump OpenJDK 64-Bit Server VM (25.312-b07 mixed mode):

"Attach Listener" #6665 daemon prio=9 os_prio=0 tid=0x00007f1830070000 nid=0x3b0d waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"http-nio-8010-exec-110" #6436 daemon prio=5 os_prio=0 tid=0x00007f18480bd000 nid=0x174b waiting on condition [0x00007f18098f0000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000d6aca600> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:107)
        at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)

   Locked ownable synchronizers:
        - None

...
...
...

"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007f1864162800 nid=0x17ee in Object.wait() [0x00007f184e317000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:502)
        at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
        - locked <0x00000000d4509868> (a java.lang.ref.Reference$Lock)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

   Locked ownable synchronizers:
        - None

"VM Thread" os_prio=0 tid=0x00007f1864158800 nid=0x17ed runnable

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f186405e000 nid=0x17eb runnable

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f1864060000 nid=0x17ec runnable

"VM Periodic Task Thread" os_prio=0 tid=0x00007f18641b1800 nid=0x17f4 waiting on condition

JNI global references: 1376
2025年3月23日