gpt4 book ai didi

java - jstack 输出中显示的大十六进制数字 "parking to wait for ..."是什么意思?

转载 作者:行者123 更新时间:2023-12-02 09:42:44 27 4
gpt4 key购买 nike

我有 jstack,其中许多线程处于 WAITING 状态,其描述为“parking to wait for”,例如:

java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.3/Native Method)
- parking to wait for <0x0000000307db96c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.3/LockSupport.java:194)

这个大的十六进制数字是什么?时间到了吗?它是标识符吗?

编辑

我已经将我的 Java 应用程序的状态转储为在早上和下午工作很长时间(几天)的线程。我看到“等待条件”具有相同的大十六进制数字,但“ parking 等待”中的其他大十六进制数字不同:

早上:

"qtp792232038-1037-..." #1037 prio=5 os_prio=0 cpu=787.64ms elapsed=528768.56s tid=0x00007f164004a800 nid=0x1346
waiting on condition [0x00007f181fffd000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.3/Native Method)
- parking to wait for <0x000000030a69c410> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.3/LockSupport.java:194)
...

几个小时后:

"qtp792232038-1037-..." #1037 prio=5 os_prio=0 cpu=787.64ms elapsed=546900.36s tid=0x00007f164004a800 nid=0x1346
waiting on condition [0x00007f181fffd000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.3/Native Method)
- parking to wait for <0x0000000307db96c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.3/LockSupport.java:194)
...

最佳答案

是的,它是锁对象的内部标识符。

您可以使用它来查看哪个线程正在等待哪个其他线程。

在线程转储中搜索此 id,应该有另一个线程提到了一个堆栈帧,该线程持有具有相同 id 的锁。

关于java - jstack 输出中显示的大十六进制数字 "parking to wait for ..."是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56931621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com