JConsole не может найти процесс

Я попытался запустить JConsole для анализа памяти, используемой запущенным процессом, но JConsole не показывает мне процессы, даже если я абсолютно уверен, что один из них запущен (в дополнение к этому он должен также отображать JConsole в списке процессов, но не делает).

У кого-нибудь есть идея, почему он не показывает никаких процессов?

ура

6 ответов

В командной строке запустите echo %TMP%, он даст вам временный каталог по умолчанию. Перейдите в этот каталог и найдите каталог с именем hsperfdata_, где находится ваш логин. Это каталог для хранения вашего идентификатора процесса. Любой новый процесс, который вы создали, например, Java-приложение, будет иметь новый файл с именем id процесса. Jconsole выберет идентификаторы процессов из этого каталога. Если вы не можете создать файл в этом каталоге, это означает, что вам нужно разрешение на изменение, чтобы разрешить запись. После этого запустите новое приложение Java, чтобы увидеть, есть ли новый файл идентификатора процесса в каталоге. После подтверждения запустите jconsole

У меня та же проблема. Но если я явно укажу PID, как в jconsole 1234jconsole умеет анализировать процесс.

Если вы используете jconsole в Windows - просто:

  1. Найти jconsole.exe
  2. Щелкните правой кнопкой мыши
  3. Выберите " Запуск от имени администратора".

В моем случае удаление hsperfdata_USERNAME каталог (в %TMP% справка) и закрытие всех JVM помогло.

8 лет спустя... У меня была такая же проблема. Я мог видеть только определенные процессы, но не мог видеть и контролировать какие-либо java-процессы, запущенные в контейнере докеров в Linux.

На основе решения RoyalBigMack для Windows:

  • Решение 1. Запустите терминал от имени суперпользователя (su команда) и запустите jconsole
  • Решение 2. Запустите решение 1 как одну команду, sudo jconsole

У меня сработало только первое решение, и как только пользовательский интерфейс jconsole появился, все скрытые процессы стали видны.

Вы должны запустить jconsole с тем же пользователем, с которым запускается процесс, который вы хотите проанализировать.

Просто столкнулся с этой проблемой

Если вы случайно используете несколько jdk (например, SDKMAN), убедитесь, что jconsole запускается с использованием того же jdk, что и приложение

Это происходит, когда значение%TMP% отличается для отслеживаемой JVM и инструмента мониторинга (JConsole/JMC/Java Mission Control, возможно, даже VisualVM). Это может быть стандартный сценарий с Cygwin (по крайней мере, в моем случае: Cygwin+Babun). Самое простое решение - установить значение переменной среды TMP равным значению по умолчанию, используемому Windows, по крайней мере в области запуска оболочки JVM.

Другие вопросы по тегам