Как я могу получить приоритет потока от JMX?

1

Моему приложению необходимо создать дамп потока из удаленного процесса с использованием JMX, поэтому я использовал это как отправную точку: http://www.java2s.com/Code/Java/Development-Class/ThisFullThreadDumpclassdemonstratesthecapabilitytogetafullthreaddumpandalsodetectdeadlockremotely.htm

Он использует класс java.lang.management.ThreadMXBean для получения ThreadInfo.

Однако выход jstack включает приоритет потока

"pool-5-thread-1" prio=6 tid=0x0000000009da0000 nid=0x1820 waiting on condition   [0x000000000c35e000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method) 

Как я могу получить это с помощью JMX?

  • 0
    Вы знаете, что приоритет почти ничего не делает, в лучшем случае вы должны воспринимать его как подсказку, а в худшем - как комментарий.
  • 0
    Некоторые анализаторы дампа потоков с открытым исходным кодом не могут проанализировать вывод, если его там нет. У меня сейчас жестко задано prio = -1, но я бы хотел получить то же самое, что и jstack, если это возможно.
Показать ещё 4 комментария
Теги:
jmx

1 ответ

0

JStack подключается с использованием интерфейса отладчика JVM, а не через JMX. То, как он может получить информацию о приоритете.

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

Вы можете увидеть, как работает JStack, глядя в исходный код OpenJDK:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/sun/tools/jstack/JStack.java#JStack.runThreadDump%28java.lang.String%2Cjava. lang.String []% 29

Ещё вопросы

Сообщество Overcoder
Наверх
Меню