Comment fournir des arguments JVM à VisualVM?

97

J'utilise VisualVM à partir de JDK 1.6.0_26 pour profiler une application Web Java exécutée sous Tomcat, mais VisualVM me dit souvent qu'il n'a pas assez de mémoire pour prendre un instantané et utiliser le commutateur -Xmx pour fournir plus de mémoire à Netbeans . Le problème est que j'exécute VisualVM en dehors de Netbeans, alors comment puis-je fournir des arguments JVM à jvisualvm.exe?

Mike Partridge
la source

Réponses:

139

Devrait pouvoir modifier les paramètres de mémoire dans %JDK_HOME%\lib\visualvm\etc\visualvm.conf

Xmset Xmxsont dans la default_optionsligne.

Zack Macomber
la source
2
Sur (ma copie de :) OSX: /System/Library/Java/Support/VisualVM.bundle/Contents/Home/etc/visualvm.conf
Jonas N
@Zack Pouvez-vous confirmer cela -J-Xmset -J-Xmxsont en fait les bons noms d'options? Le -Jpréfixe est-il nécessaire lorsque ceux-ci sont spécifiés dans le fichier conf?
GreenGiant
@GreenGiant Je ne sais pas s'ils le sont ou non ... Dans ma copie de visualvm.conf, j'ai -J-Xms24met -J-Xmx256mdonc je suppose que ce sont les bons noms d'options. Vous pourriez probablement chercher sur Google comment formater visualvm.conf pour plus d'informations ...
Zack Macomber
@Zack mon fichier de configuration est également le même. Je voulais juste confirmer car votre réponse n'incluait pas le -Jpréfixe.
GreenGiant
Pour info, sur Linux (Mint, probablement Ubuntu aussi) c'est /usr/lib/jvm/java-6-sun/lib/visualvm/etc/visualvm.conf.
David Moles
53

ou je pense que cela fonctionne aussi:

jvisualvm.exe -J-Xmx512m (ou quel que soit le montant dont vous avez besoin)

-J sur la ligne de commande .exe pour les paramètres uniques, ou le fichier .conf noté dans l'autre réponse pour modifier les valeurs par défaut

Kevin Welker
la source
Je n'ai pas pu faire fonctionner ça. J'ai essayé à jvisualvm.exe -J-Xms256m -J-Xmx1024mpartir de l'invite de commande et lors de l'inspection du processus, j'ai pu voir que les arguments n'étaient pas appliqués.
Mike Partridge
3
Je viens de l'essayer et il semble l'ajouter. Donc , je vois le 192m par défaut et aussi une autre entrée pour 1024m. Il semble que ce dernier soit prioritaire. Quelle version JDK?
Kevin Welker
J'utilise 1.6.0_26. Lorsque vous utilisez JConsole pour inspecter le processus VisualVM, la section des arguments VM de l'onglet Résumé de la VM affiche les valeurs par défaut et les valeurs que j'ai fournies, mais lorsque vous utilisez VisualVM pour inspecter lui-même, dans Présentation> Arguments JVM, il ne signale que les valeurs par défaut.
Mike Partridge
J'utilise 1.6.0_20 et je vois 2 lignes qui listent Xmx. Le premier est la valeur par défaut et le dernier est la nouvelle valeur. J'ai copié votre ligne de commande directement à partir de votre commentaire ci-dessus juste pour être sûr. Sortie dans Vue d'ensemble> JVM comprend:-Xms24m -Xmx192m -Dsun.jvmstat.perdata.syncWaitMs=10000 -Xms256m -Xmx1024m
Kevin Welker
31

J'ai commencé avec

jvisualvm -J-Xms1024m -J-Xmx2048m

et cela a fonctionné.

Prabhat Jha
la source
J'aime cela parce que l'emplacement du fichier .conf a changé mais cela fonctionne toujours et fonctionnerait probablement pour au moins certains autres programmes Java, contrairement aux commentaires ci-dessus, ce n'est pas difficile à trouver pour les utilisateurs de Mac. Le monde utilise Google qui nous amène ici.
George Co
Comme indiqué dans les commentaires ci-dessous, à l'intérieur de jvisualvm, lorsque vous regardez les arguments VM, il semble que cela ne fonctionne pas, mais cela fonctionne. Je n'obtiens plus d'erreur MOO.
George Co
22

Sous mac, vous pouvez les configurer en éditant ce fichier.

/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
la source
Veuillez garder votre réponse concentrée sur la solution . Si vous souhaitez ajouter des méta-informations, faites-le dans un commentaire s'il vous plaît.
Martijn Pieters
Et avec les fenêtres marquées à la question , votre réponse sera difficile à trouver pour les utilisateurs de Mac. Pensez à en faire une nouvelle question de toute façon .
Martijn Pieters
Je n'ai pas voté sur ce post, ne sautez pas aux conclusions.
Martijn Pieters
Pourquoi apporteriez-vous une modification inutile à cette réponse? Pour gagner plus de réputation? La réponse était déjà précise et limpide . BTW, avec chacune de vos modifications, j'ai une note basse!
aspdeepak
2
J'ai fait une modification ici et j'ai expliqué pourquoi je l'avais fait. Si vous voulez insister pour ajouter une réponse Mac uniquement à une question destinée aux utilisateurs de Windows par des balises, c'est bien, mais gardez les méta-informations en dehors; votre message ne doit contenir qu'une solution, pas un avis de vote.
Martijn Pieters
1

Pour Mac OSX 10.12+

Si vous avez téléchargé le visualvm dmgdepuis https://visualvm.github.io/download.html et l'avez déplacé dans le Applicationsrépertoire. Vous pouvez trouver le fichier de configuration visualvm.confsous l'emplacement Applications/VisualVM.app/Contents/etc/visualvm.conf. Dans ce fichier de configuration, vous pouvez modifier le

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

à (par exemple)

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

Hardik Modha
la source