Как предоставить VisualVM аргументы JVM?

97

Я использую VisualVM из JDK 1.6.0_26 для профилирования веб-приложения Java, работающего под Tomcat, но VisualVM часто сообщает мне, что у него недостаточно памяти для создания моментального снимка, и использовать переключатель -Xmx, чтобы предоставить больше памяти для Netbeans . Проблема в том, что я запускаю VisualVM вне Netbeans, поэтому как я могу предоставить аргументы JVM для jvisualvm.exe?

Майк Партридж
источник

Ответы:

139

Должна быть возможность изменять настройки памяти в %JDK_HOME%\lib\visualvm\etc\visualvm.conf

Xmsи Xmxнаходятся в default_optionsочереди.

Зак Макомбер
источник
2
На (моей копии :) OSX: /System/Library/Java/Support/VisualVM.bundle/Contents/Home/etc/visualvm.conf
Jonas N
@Zack Можете ли вы подтвердить это -J-Xmsи -J-Xmxдействительно ли это правильные названия параметров? -JНеобходим ли префикс, если они указаны в файле conf?
GreenGiant
@GreenGiant Я не уверен, есть они или нет ... В моей копии visualvm.conf у меня есть -J-Xms24m&, -J-Xmx256mпоэтому я предполагаю, что это правильные имена параметров. Возможно, вы могли бы погуглить, как отформатировать visualvm.conf для получения дополнительной информации ...
Зак Макомбер,
@Zack, мой файл conf тоже такой же. Просто хотел подтвердить, так как в вашем ответе не было -Jпрефикса.
GreenGiant
К вашему сведению, в Linux (Mint, предположительно также Ubuntu) это /usr/lib/jvm/java-6-sun/lib/visualvm/etc/visualvm.conf.
Дэвид Моулс
53

или я думаю, что это тоже работает:

jvisualvm.exe -J-Xmx512m (или сколько вам нужно)

-J в командной строке .exe для одноразовых настроек или файл .conf, указанный в другом ответе, для изменения значений по умолчанию

Кевин Велкер
источник
Я не мог заставить это работать. Я попробовал jvisualvm.exe -J-Xms256m -J-Xmx1024mиз командной строки и при проверке процесса увидел, что аргументы не были применены.
Майк Партридж
3
Я просто попробовал, и кажется, что он его добавляет. Итак, я вижу значение по умолчанию 192 м, а также другую запись для 1024 м. Похоже, последнее имеет приоритет. Какая версия JDK?
Кевин Велкер
Я использую 1.6.0_26. При использовании JConsole для проверки процесса VisualVM в разделе аргументов виртуальной машины на вкладке «Сводка виртуальной машины» отображаются значения по умолчанию и значения, которые я предоставил, но при использовании VisualVM для проверки самого себя в разделе «Обзор»> «Аргументы JVM» отображаются только значения по умолчанию.
Майк Партридж
Я использую 1.6.0_20, и я вижу 2 строки, в которых перечислены Xmx. Первый - значение по умолчанию, а последний - новое значение. Я скопировал вашу командную строку прямо из вашего комментария выше, чтобы быть уверенным. Вывод в обзоре> JVM включает:-Xms24m -Xmx192m -Dsun.jvmstat.perdata.syncWaitMs=10000 -Xms256m -Xmx1024m
Кевин Велкер
31

Я начал с

jvisualvm -J-Xms1024m -J-Xmx2048m

и это сработало.

Прабхат Джха
источник
Мне это нравится, потому что расположение файла .conf изменилось, но это все еще работает и, предположительно, будет работать по крайней мере для некоторых других программ Java. Вопреки комментариям выше это не сложно найти для пользователей Mac. Мир использует Google, который приводит нас сюда.
Джордж Ко,
Как отмечено в комментариях ниже, внутри jvisualvm, когда вы смотрите на аргументы виртуальной машины, кажется, что он не работает, но работает. Я больше не получаю сообщение об ошибке OOM.
Джордж Ко,
23

В Mac вы можете настроить их, отредактировав этот файл.

/Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf

visualvm_default_options="-J-client -J-Xms4096m -J-Xmx5120m -J-XX:+IgnoreUnrecognizedVMOptions -J-Dnetbeans.accept_license_class=com.sun.tools.visualvm.modules.startup.AcceptLicense -J-Dsun.jvmstat.perdata.syncWaitMs=10000 -J-Dsun.java2d.noddraw=true"
аспдипак
источник
Пожалуйста, сосредоточьтесь на решении . Если вы хотите добавить мета-информацию, сделайте это в комментариях.
Мартин Питерс
А с окнами с тегами вопросов ваш ответ будет трудно найти пользователям Mac. В любом случае подумайте о том, чтобы сделать это новым вопросом .
Мартин Питерс
Я не голосовал за этот пост, не спешите с выводами.
Мартин Питерс
Зачем вам делать ненужные изменения в этом ответе? Чтобы получить больше репутации? Ответ был уже конкретным и кристально ясным . Кстати, с каждым из ваших правок у меня понижается рейтинг!
aspdeepak
2
Я сделал здесь одну правку и объяснил, почему я это сделал. Если вы хотите настоять на добавлении ответа только для Mac на вопрос, адресованный пользователям Windows с помощью тегов, это нормально, но не включайте в него метаинформацию; ваш пост должен содержать только решение, а не советы по голосованию.
Мартейн Питерс
2

Для Mac OSX 10.12+

Если вы загрузили visualvm dmgс https://visualvm.github.io/download.html и переместили его в Applicationsкаталог. Вы можете найти файл конфигурации visualvm.confпод адресом Applications/VisualVM.app/Contents/etc/visualvm.conf. В этом файле конфигурации вы можете изменить

visualvm_default_options="-J-client -J-Xms24m -J-Xmx256m

к (например)

visualvm_default_options="-J-client -J-Xms24m -J-Xmx2048m

Хардик Модха
источник
на моем Mac это было /Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf
Kranach