JConsole не может найти процесс
Я попытался запустить JConsole для анализа памяти, используемой запущенным процессом, но JConsole не показывает мне процессы, даже если я абсолютно уверен, что один из них запущен (в дополнение к этому он должен также отображать JConsole в списке процессов, но не делает).
У кого-нибудь есть идея, почему он не показывает никаких процессов?
ура
6 ответов
В командной строке запустите echo %TMP%, он даст вам временный каталог по умолчанию. Перейдите в этот каталог и найдите каталог с именем hsperfdata_, где находится ваш логин. Это каталог для хранения вашего идентификатора процесса. Любой новый процесс, который вы создали, например, Java-приложение, будет иметь новый файл с именем id процесса. Jconsole выберет идентификаторы процессов из этого каталога. Если вы не можете создать файл в этом каталоге, это означает, что вам нужно разрешение на изменение, чтобы разрешить запись. После этого запустите новое приложение Java, чтобы увидеть, есть ли новый файл идентификатора процесса в каталоге. После подтверждения запустите jconsole
У меня та же проблема. Но если я явно укажу PID, как в jconsole 1234
jconsole умеет анализировать процесс.
Если вы используете jconsole в Windows - просто:
- Найти jconsole.exe
- Щелкните правой кнопкой мыши
- Выберите " Запуск от имени администратора".
В моем случае удаление 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.