Что означает большое шестнадцатеричное число в выводе jstack, показывающее "стоянка для ожидания ..."? - PullRequest
0 голосов
/ 08 июля 2019

У меня есть jstack, где многие потоки находятся в состоянии WAITING с описанием «стоянка для ожидания», например:

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-приложения с потоками, которые работают очень долго (несколько дней) утром и днем.Я вижу, что «ожидание при условии» с тем же большим шестнадцатеричным номером, но другое большое шестнадцатеричное число в «стоянке для ожидания» отличается:

Утром:

"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)
    ...

1 Ответ

1 голос
/ 08 июля 2019

Да, это внутренний идентификатор объекта блокировки.

Вы можете использовать это, чтобы увидеть, какой поток ожидает другого потока.

Поиск дампа потока для этого идентификатора,должен быть упомянут другой поток со стековым фреймом, который удерживает блокировку с тем же идентификатором.

...