Почему этот параметр JVM Hotspot не используется по умолчанию? -XX: + PrintConcurrentLocks

По умолчанию, с Hotspot, дамп потока CTRL-Break не будет перечислять, какие потоки содержат java.lang.concurrent замки. И я понимаю, что с этими блокировками Hotspot не может иметь информацию о том, в каком фрейме стека была получена блокировка. Если вы добавите опцию JVM -XX: + PrintConcurrentLocks , тогда дамп стека CTRL-Break перечислит (после трассировки стека потока) любые параллельные блокировки, удерживаемые этим кадром. Например:

"D-Java-5-Lock" prio=6 tid=0x00000000069a1800 nid=0x196c runnable [0x000000000770f000]
   java.lang.Thread.State: RUNNABLE
      at com.Tester.longDelay(Tester.java:41)
      at com.Tester$D.run(Tester.java:88)

   Locked ownable synchronizers:
      - <0x00000007d6030898> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

Без этой опции невозможно выяснить, какой поток удерживает эту блокировку после вскрытия. Почему этот вариант не установлен по умолчанию? Есть ли какие-то неочевидные потери производительности или стабильности? Когда я ищу обсуждение этого, ничего не появляется.

7
задан Vadim Kotov 17 October 2017 в 14:56
поделиться