Wie stelle ich VisualVM JVM-Argumente zur Verfügung?

97

Ich verwende VisualVM aus JDK 1.6.0_26, um eine Java-Webanwendung zu profilieren, die unter Tomcat ausgeführt wird. VisualVM teilt mir jedoch häufig mit, dass nicht genügend Speicher vorhanden ist, um einen Snapshot zu erstellen, und verwendet den Schalter -Xmx, um Netbeans mehr Speicher bereitzustellen . Das Problem ist, dass ich VisualVM außerhalb von Netbeans ausführe. Wie kann ich jvisualvm.exe JVM-Argumente bereitstellen?

Mike Partridge
quelle

Antworten:

139

Sollte in der Lage sein, die Speichereinstellungen in zu ändern %JDK_HOME%\lib\visualvm\etc\visualvm.conf

Xmsund Xmxsind in der default_optionsLinie.

Zack Macomber
quelle
2
On (meine Kopie von :) OSX: /System/Library/Java/Support/VisualVM.bundle/Contents/Home/etc/visualvm.conf
Jonas N
@Zack Kannst du das bestätigen -J-Xmsund -J-Xmxsind eigentlich die richtigen Optionsnamen? Ist das -JPräfix erforderlich, wenn diese in der conf-Datei angegeben sind?
GreenGiant
@GreenGiant Ich bin mir nicht sicher, ob sie es sind oder nicht ... In meiner Kopie von visualvm.conf habe ich -J-Xms24m& -J-Xmx256malso gehe ich davon aus, dass dies die richtigen Optionsnamen sind. Sie könnten wahrscheinlich googeln, wie visualvm.conf für weitere Informationen formatiert wird ...
Zack Macomber
@Zack meine conf-Datei ist auch die gleiche. Ich wollte nur bestätigen, da Ihre Antwort das -JPräfix nicht enthielt .
GreenGiant
Zu Ihrer Information, unter Linux (Mint, vermutlich auch Ubuntu) ist es /usr/lib/jvm/java-6-sun/lib/visualvm/etc/visualvm.conf.
David Moles
53

oder ich denke das funktioniert auch:

jvisualvm.exe -J-Xmx512m (oder was auch immer Sie brauchen)

-J in der .exe-Befehlszeile für einmalige Einstellungen oder in der .conf-Datei, die in der anderen Antwort zum Ändern der Standardeinstellungen angegeben ist

Kevin Welker
quelle
Ich konnte das nicht zum Laufen bringen. Ich habe es jvisualvm.exe -J-Xms256m -J-Xmx1024man der Eingabeaufforderung versucht , und bei der Überprüfung des Prozesses konnte ich feststellen, dass die Argumente nicht angewendet wurden.
Mike Partridge
3
Ich habe es gerade versucht und es scheint es anzuhängen. Ich sehe also die Standardeinstellung 192m und auch einen weiteren Eintrag für 1024m. Letzteres hat anscheinend Vorrang. Welche Version JDK?
Kevin Welker
Ich benutze 1.6.0_26. Wenn Sie JConsole zum Überprüfen des VisualVM-Prozesses verwenden, werden im Abschnitt VM-Argumente auf der Registerkarte VM-Zusammenfassung die Standardeinstellungen und die von mir angegebenen Werte angezeigt. Wenn Sie jedoch VisualVM zum Überprüfen selbst verwenden, werden in Übersicht> JVM-Argumente nur die Standardeinstellungen angezeigt.
Mike Partridge
Ich verwende 1.6.0_20 und sehe 2 Zeilen, in denen Xmx aufgelistet ist. Der erste ist der Standardwert und der letztere ist der neue Wert. Ich habe Ihre Befehlszeile direkt aus Ihrem obigen Kommentar kopiert, nur um sicherzugehen. Ausgabe in Übersicht> JVM enthält:-Xms24m -Xmx192m -Dsun.jvmstat.perdata.syncWaitMs=10000 -Xms256m -Xmx1024m
Kevin Welker
31

Ich habe angefangen mit

jvisualvm -J-Xms1024m -J-Xmx2048m

und es hat funktioniert.

Prabhat Jha
quelle
Ich mag das, weil sich der Speicherort der .conf-Datei geändert hat, aber dies funktioniert immer noch und würde vermutlich zumindest für einige andere Java-Programme funktionieren. Im Gegensatz zu den obigen Kommentaren ist dies für Mac-Benutzer nicht schwer zu finden. Die Welt nutzt Google, das uns hierher bringt.
George Co
Wie in den Kommentaren unten erwähnt, scheint es innerhalb von jvisualvm, wenn Sie sich VM-Argumente ansehen, nicht zu funktionieren, aber es funktioniert. Ich erhalte keinen OOM-Fehler mehr.
George Co
21

In Mac können Sie sie konfigurieren, indem Sie diese Datei bearbeiten.

/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
quelle
Bitte konzentrieren Sie Ihre Antwort auf die Lösung . Wenn Sie Metainformationen hinzufügen möchten, tun Sie dies bitte in einem Kommentar.
Martijn Pieters
Und mit den mit Fragen versehenen Fenstern wird Ihre Antwort für Mac-Benutzer schwer zu finden sein. Überlegen Sie sich trotzdem, ob Sie eine neue Frage stellen möchten .
Martijn Pieters
Ich habe nicht über diesen Beitrag abgestimmt, bitte springe nicht zu Schlussfolgerungen.
Martijn Pieters
Warum sollten Sie diese Antwort unnötig bearbeiten? Um mehr Ansehen zu erlangen? Die Antwort war bereits konzentriert und kristallklar . Übrigens, mit jeder Ihrer Änderungen habe ich eine schlechte Bewertung!
Aspdeepak
2
Ich habe hier eine Bearbeitung vorgenommen und klargestellt, warum ich das getan habe. Wenn Sie darauf bestehen möchten, eine Nur-Mac-Antwort auf eine Frage hinzuzufügen, die sich an Windows-Benutzer mit Tags richtet, ist dies in Ordnung, aber halten Sie Metainformationen fern. Ihr Beitrag sollte nur eine Lösung enthalten, keine Abstimmungsempfehlung.
Martijn Pieters
0

Für Mac OSX 10.12+

Wenn Sie das visualvm dmgvon https://visualvm.github.io/download.html heruntergeladen und in das ApplicationsVerzeichnis verschoben haben . Sie finden die Konfigurationsdatei visualvm.confunter dem Speicherort Applications/VisualVM.app/Contents/etc/visualvm.conf. In dieser Konfigurationsdatei können Sie die ändern

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

zu (zB)

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

Hardik Modha
quelle