У меня есть процесс jvm, который постоянно потребляет одно процессорное ядро. Я проверил java-потоки и, похоже, не работает, поэтому кажется, что загрузка происходит из встроенного потока.изучить jvm высокий уровень использования процессора
Я пытался использовать pstack: pstack <thread_id>
, но он вернулся мне список адресов, которые не очень полезны:
#0 0x00007fcc33c2b694 in ??()
#1 0x00007fcc3011f540 in ??()
#2 0x00007fcc2c032710 in ??()
#3 0x00007fcc3011f560 in ??()
#4 0x00007fcc33c6eaa0 in ??()
#5 0x00007fcc3011f560 in ??()
#6 0x00007fcc3011f7f0 in ??()
#7 0x00007fcc346414d0 in ??()
#8 0x00007fcc34641bf8 in ??()
#9 0x00007fcc3011f570 in ??()
#10 0x00007fcc33c83618 in ??()
#11 0x00007fcc3011f5a0 in ??()
#12 0x00007fcc33c6ea66 in ??()
#13 0x00000006b73ce4b0 in ??()
#14 0x00007fcc3011f7f0 in ??()
Что я могу делать дальше? Насколько я понимаю, может быть полезно использовать символы для преобразования аддонов в читаемые имена, но я не уверен, существуют ли они для jvm.
Другой вариант - попросить jvm распечатать внутреннее состояние, но я не уверен, существуют ли такие команды.
Любая информация оценивается.
Я использую 1.7.0_80 JDK:
# ./java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
в докер (1.9.1) контейнера:
# uname -a
Linux 259307ada273 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Вы можете рассказать о своем процессе? 10 секунд снимка будет достаточно, чтобы определить, есть ли метод, который постоянно работает – AdamSkywalker