Jak przekazać argumenty JVM do programu VisualVM?

97

Używam VisualVM z JDK 1.6.0_26 do profilowania aplikacji internetowej Java działającej pod Tomcat, ale VisualVM często mówi mi, że nie ma wystarczającej ilości pamięci, aby zrobić migawkę i aby użyć przełącznika -Xmx, aby zapewnić więcej pamięci dla Netbeans . Problem polega na tym, że używam VisualVM poza Netbeans, więc jak mogę dostarczyć argumenty JVM do jvisualvm.exe?

Mike Partridge
źródło

Odpowiedzi:

139

Powinien móc modyfikować ustawienia pamięci w %JDK_HOME%\lib\visualvm\etc\visualvm.conf

Xmsi Xmxsą w default_optionskolejce.

Zack Macomber
źródło
2
On (moja kopia :) OSX: /System/Library/Java/Support/VisualVM.bundle/Contents/Home/etc/visualvm.conf
Jonas N
@Zack Czy możesz to potwierdzić -J-Xmsi -J-Xmxczy faktycznie są to prawidłowe nazwy opcji? Czy -Jprzedrostek jest potrzebny, gdy są one określone w pliku konfiguracyjnym?
GreenGiant,
@GreenGiant Nie jestem pewien, czy są, czy nie ... W mojej kopii pliku visualvm.conf mam -J-Xms24m&, -J-Xmx256mwięc zakładam, że są to prawidłowe nazwy opcji. Prawdopodobnie mógłbyś wygooglować, jak sformatować visualvm.conf, aby uzyskać więcej informacji ...
Zack Macomber,
@Zack mój plik conf jest taki sam. Chciałem tylko potwierdzić, ponieważ Twoja odpowiedź nie zawierała -Jprefiksu.
GreenGiant,
FYI, na Linuksie (Mint, prawdopodobnie również Ubuntu) to /usr/lib/jvm/java-6-sun/lib/visualvm/etc/visualvm.conf.
David Moles
53

lub myślę, że to też działa:

jvisualvm.exe -J-Xmx512m (lub ile potrzebujesz)

-J w wierszu poleceń .exe dla ustawień jednorazowych lub plik .conf zanotowany w drugiej odpowiedzi na zmianę ustawień domyślnych

Kevin Welker
źródło
Nie mogłem zmusić tego do pracy. Próbowałem jvisualvm.exe -J-Xms256m -J-Xmx1024mz wiersza polecenia i podczas sprawdzania procesu zauważyłem, że argumenty nie zostały zastosowane.
Mike Partridge
3
Właśnie go wypróbowałem i wydaje się, że dołącza. Widzę więc domyślne 192 m, a także inny wpis dla 1024 m. Wygląda na to, że pierwszeństwo ma ta ostatnia. Jaka wersja JDK?
Kevin Welker
Używam 1.6.0_26. Podczas korzystania z JConsole do inspekcji procesu VisualVM sekcja argumentów maszyny wirtualnej na karcie Podsumowanie maszyny wirtualnej pokazuje wartości domyślne i podane przeze mnie, ale podczas korzystania z VisualVM do sprawdzenia samego siebie, w sekcji Przegląd> argumenty JVM podaje tylko wartości domyślne.
Mike Partridge
Używam 1.6.0_20 i widzę 2 wiersze z listą Xmx. Pierwsza to wartość domyślna, a druga to nowa wartość. Dla pewności skopiowałem Twój wiersz poleceń bezpośrednio z Twojego komentarza. Dane wyjściowe w sekcji Przegląd> JVM obejmują:-Xms24m -Xmx192m -Dsun.jvmstat.perdata.syncWaitMs=10000 -Xms256m -Xmx1024m
Kevin Welker
31

Zacząłem od

jvisualvm -J-Xms1024m -J-Xmx2048m

i zadziałało.

Prabhat Jha
źródło
Podoba mi się to, ponieważ zmieniła się lokalizacja pliku .conf, ale to nadal działa i prawdopodobnie działałoby przynajmniej z niektórymi innymi programami Java, W przeciwieństwie do powyższych komentarzy nie jest to trudne do znalezienia dla użytkowników komputerów Mac. Świat używa Google, który nas tu sprowadza.
George Co
Jak zauważono w komentarzach poniżej, wewnątrz jvisualvm, gdy patrzysz na argumenty VM, wygląda na to, że nie działa, ale działa. Nie pojawia się już błąd OOM.
George Co
23

W systemie Mac możesz je skonfigurować, edytując ten plik.

/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"
aspdeepak
źródło
Skup swoją odpowiedź na rozwiązaniu . Jeśli chcesz dodać meta-informacje, zrób to w komentarzu.
Martijn Pieters
W przypadku okien oznaczonych pytaniem Twoja odpowiedź będzie trudna do znalezienia dla użytkowników komputerów Mac. Zastanów się co nowe pytanie w każdym razie .
Martijn Pieters
Nie głosowałem nad tym postem, proszę nie wyciągać pochopnych wniosków.
Martijn Pieters
Dlaczego miałbyś niepotrzebnie edytować tę odpowiedź? Aby zdobyć więcej reputacji? Odpowiedź była już skupiona i krystalicznie jasna . A tak przy okazji, każda z Twoich zmian ma obniżoną ocenę!
aspdeepak
2
Zrobiłem jeden zmienił tutaj, i stało się jasne, dlaczego to zrobiłem. Jeśli chcesz nalegać na dodanie odpowiedzi tylko dla komputerów Mac na pytanie skierowane do użytkowników systemu Windows za pomocą tagów, to w porządku, ale nie dopuszczaj do tego metainformacji; Twój post powinien zawierać tylko rozwiązanie, a nie porady dotyczące głosowania.
Martijn Pieters
2

Dla Mac OSX 10.12+

Jeśli pobrałeś visualvm dmgz https://visualvm.github.io/download.html i przeniosłeś go do Applicationskatalogu. Możesz znaleźć plik konfiguracyjny visualvm.confw lokalizacji Applications/VisualVM.app/Contents/etc/visualvm.conf. W tym pliku konfiguracyjnym możesz zmienić

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

do (np.)

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

Hardik Modha
źródło
na moim Macu było to /Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf
Kranach