jProfiler не может найти JVM

Я запустил jprofiler на своем рабочем сервере и после некоторого профилирования убил его (kill -9 ).

Теперь я пытаюсь запустить его снова и получаю только «Непрофилированные JVM не найдены». сообщение, но команда jps говорит, что мое приложение запущено (и я вижу, что оно работает на самом деле).

Вероятно, jprofiler хранит информацию о том, какие jvms он профилирует в данный момент, в каком-то файле, и команда kill помешала ему обновить этот файл. Итак, как я могу очистить его вручную?

p.s. Я попытался удалить, а затем снова распаковать jprofile, но все равно не работает.


person tsds    schedule 06.02.2012    source источник
comment
kill -9 не дает целевому процессу возможность очиститься (например, правильно отменить регистрацию в целевой JVM). Используйте его только тогда, когда простое убийство не сработало.   -  person Mat    schedule 06.02.2012


Ответы (3)


JProfiler находит JVM через «Attach API», который является частью JDK. Взгляните на каталог $TMP/hsperfdata_$USER, созданный JVM горячей точки. Он должен содержать файлы PID для всех запущенных JVM. Если нет, удалите каталог и перезапустите все JVM.

person Ingo Kegel    schedule 07.02.2012
comment
Просто примечание для тех, у кого может быть такая же проблема, как у меня: если вы используете cygwin в Windows, он использует другой каталог tmp, поэтому JProfiler не сможет найти файлы PID. Вместо этого попробуйте использовать приглашение cmd. - person mmdeas; 17.03.2016
comment
В моем случае каталог hsperfdata_$USER почему-то не содержит файлов. Удаление этой папки не помогло. После перезапуска JVM создается новый пустой каталог. Есть ли у вас какие-либо идеи о том, как решить эту проблему? Я использую вебсферу - person Dmitry Nichiporenko; 21.09.2020
comment
Механизм подключения работает только для JVM Hotspot, но не для JVM IBM. - person Ingo Kegel; 21.09.2020
comment
Для OpenJDK 1.8.0_151-b12 также? 64-разрядная виртуальная машина сервера OpenJDK (сборка 25.151-b12, смешанный режим) - person Dmitry Nichiporenko; 22.09.2020
comment
Да, это должно работать для всех JVM OpenJDK. Может быть, временный каталог был установлен в нестандартный каталог для процесса? - person Ingo Kegel; 23.09.2020

посмотрите на этот QA, невозможно выгрузить агент Jprofiler в процессе Java, если вы не убьете файл jp.

Я не уверен, что вы действительно можете убить агента.

«Непрофилированные JVM не найдены». сообщение появится, когда вы дважды запустите Jprofiler. Попробуйте перезапустить отслеживаемое Java-приложение.

person David    schedule 28.09.2016

На сервере WLS это обычно означает, что вы перезапустили сервер, и у вас есть две JVM. Я запускаю это, чтобы запустить jpenable: ./jpenable --gui --port=8888 --pid=$WLS_ID и получаю эту ошибку: JVM с PID 14690 не является непрофилированной.

Убейте одного из перечисленных: kill -9 14690

Повторно запустите приведенную выше команду запуска jpenable со следующим выводом: Подключение к weblogic.Server [18037]... Теперь вы можете использовать графический интерфейс JProfiler для подключения к порту 8888.

18037 — это PID виртуальной машины JVM, которую нельзя подключить к клиенту JProfiler.

person Derick    schedule 15.05.2020