VisualVM "не поддерживается для этой JVM" во всех локальных приложениях? - PullRequest
38 голосов
/ 24 мая 2011

Я уже потратил много времени на загрузку и тестирование своего приложения, теперь мне нужно его профилировать. Но, к несчастью, VisualVM всегда говорит «не поддерживается для этой JVM» в моих локальных приложениях?

Приложения были запущены на той же JVM с VisualVM.

Ответы [ 13 ]

14 голосов
/ 21 ноября 2012

Я обнаружил, что (по крайней мере, в Windows) можно легко написать небольшие командные файлы для запуска VisualVM в сочетании с конкретными JVM, что важно для меня, поскольку я установил 32-битный JDK вместе с 64-битным JDK (мне нужнооба, так что для меня это разумно).Я создал два командных файла в папке "S: \ Applications \ visualvm \ bin \":

run_32.bat:

@echo off
START "VisualVM 32" visualvm.exe --jdkhome "C:\Program Files (x86)\Java\jdk1.7.0_07"

run_64.bat:

@echo off
START "VisualVM 64" visualvm.exe --jdkhome "C:\Program Files\Java\jdk1.7.0_07"

Очевидно, что все пути могут отличаться в вашей системе, но общая идея все равно должна работать правильно (во всех 64-битных версиях Windows).Преимущество заключается в том, что я могу использовать 32-битный пакетный файл, когда хочу использовать VisualVM в сочетании с Java-приложениями, работающими на 32-битной JVM, и т. Д. Для 64-битных.что пакетный файл запускает приложение, не дожидаясь его завершения, поэтому окно командной строки закрывается немедленно.Это не функция VisualVM, а интерпретатор пакетных файлов Windows.

11 голосов
/ 09 мая 2014

В моем случае, даже при сопоставлении JVM (оба 64-разрядных), единственный способ заставить все работать - отправлять аргумент -Dcom.sun.management.jmxremote в JVM для мониторинга. Это также работает, если у вас есть проблемы с подключением через Java Mission Control (JMC).

Согласно документации JMX , это то, что делает аргумент:

Установка этого свойства зарегистрировала MBeans платформы Java VM и опубликовала коннектор Remote Method Invocation (RMI) через частный интерфейс, чтобы позволить клиентским приложениям JMX контролировать локальную платформу Java, то есть виртуальную машину Java, работающую на том же компьютере клиент JMX.

Это должно было быть включено автоматически, но по какой-то причине его не было в моем Linux.

11 голосов
/ 24 мая 2011

VisualVM должен быть запущен с той же JVM - по крайней мере, Java 6 с таким же размером 32-бит / 64-бит - как программа для профилирования. (Вы также должны быть тем же пользователем, но тогда это сообщение не применяется).

Я бы трижды проверил, что это была точно такая же JVM в вашей ситуации.

3 голосов
/ 26 февраля 2014

В Linux: Убедитесь, что ваш / etc / hosts правильно ссылается на эффективный IP-адрес вашего "имени хоста" Похоже, что несоответствие здесь полностью сбивает с толку бедного jvisualvm и его программистов.

2 голосов
/ 07 июня 2016

Как видите, вы используете VisualVM на 32-битной JVM

Вам не нужно удалять 32-битную JVM.Просто скажите VisualVM, что нужно использовать tour 64bit JVM.

Если вы хотите изменить его навсегда, вы можете отредактировать

в visualvm_13 \ etc \ visualvm.conf и указать путь jvm здесь

2 голосов
/ 08 октября 2015

У меня была проблема с обнаружением visualvm моей локальной установки tomcat в Windows 7. Я мог подключиться вручную, но тогда такие вещи, как снимки памяти и плагин visualgc, не были включены. Я подтвердил, что использую ту же версию JVM, разрешения для временного файла и т. Д. Не работает. Затем я обнаружил, что запуск VisualVM, а затем Tomcat, решил проблему.

2 голосов
/ 18 сентября 2015

Я тоже встречал эту проблему. В моем случае, в Linux я запустил tomcat с tomcat_user, но запускаю jvisualvm с пользователем root. Работает после запуска tomcat с пользователем root.

2 голосов
/ 09 апреля 2014

Проблема, которую я только что обнаружил, благодаря подсказке @ user3356656, заключается в том, что если вы запустите программу, когда ваш компьютер подключен к одному IP, а затем попытаетесь подключиться, когда она находится на другом IP, произойдет сбой.

1 голос
/ 23 ноября 2017

Моя проблема заключалась в оптимизации JVM - флаг -XX:+PerfDisableSharedMem сломает VisualGC. Это очевидно, если jps не покажет ваше приложение в списке.

1 голос
/ 22 августа 2017

У меня тоже возникла такая же проблема для локального кота, я ищу решения для stackoverflow. после серьезной отладки я обнаружил, что VisualGC не имеет прав на получение информации GC из файла tool.jar.

по ссылкам

http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstatd.html#SECURITY https://stackoverflow.com/a/42107355/3876619

I следующие шаги для решения проблемы

1) Создать файл разрешений

vim /tmp/tools.policy

Добавить

grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.security.AllPermission;
};

сохранить

2) Теперь добавьте /tmp/tools.policy к параметрам запуска JVM

-Djava.security.policy=/tmp/tools.policy

3) Запустите jvisualVm с помощью sudo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...