¿Cómo proporciono argumentos de JVM a VisualVM?

97

Estoy usando VisualVM de JDK 1.6.0_26 para perfilar una aplicación web Java que se ejecuta en Tomcat, pero VisualVM a menudo me dice que no tiene suficiente memoria para tomar una instantánea y usar el interruptor -Xmx para proporcionar más memoria a Netbeans . El problema es que estoy ejecutando VisualVM fuera de Netbeans, entonces, ¿cómo puedo proporcionar argumentos de JVM a jvisualvm.exe?

Mike Partridge
fuente

Respuestas:

139

Debería poder modificar la configuración de la memoria en %JDK_HOME%\lib\visualvm\etc\visualvm.conf

Xmsy Xmxestán en la default_optionslínea.

Zack Macomber
fuente
2
En (mi copia de :) OSX: /System/Library/Java/Support/VisualVM.bundle/Contents/Home/etc/visualvm.conf
Jonas N
@Zack ¿Puedes confirmar eso -J-Xmsy -J-Xmxson realmente los nombres de las opciones correctos? ¿Es -Jnecesario el prefijo cuando se especifican en el archivo conf?
GreenGiant
@GreenGiant No estoy seguro de si lo son o no ... En mi copia de visualvm.conf, tengo -J-Xms24m& -J-Xmx256masí que supongo que son los nombres correctos de las opciones. Probablemente podría buscar en Google cómo formatear visualvm.conf para obtener más información ...
Zack Macomber
@Zack mi archivo conf es el mismo también. Solo quería confirmar, ya que su respuesta no incluía el -Jprefijo.
GreenGiant
FYI, en Linux (Mint, presumiblemente Ubuntu también) es /usr/lib/jvm/java-6-sun/lib/visualvm/etc/visualvm.conf.
David Moles
53

o creo que esto también funciona:

jvisualvm.exe -J-Xmx512m (o la cantidad que necesite)

-J en la línea de comando .exe para configuraciones únicas, o el archivo .conf que se indica en la otra respuesta para cambiar los valores predeterminados

Kevin Welker
fuente
No pude hacer que esto funcionara. Lo intenté jvisualvm.exe -J-Xms256m -J-Xmx1024mdesde el símbolo del sistema y, al inspeccionar el proceso, pude ver que los argumentos no se aplicaron.
Mike Partridge
3
Lo intenté y parece adjuntarlo. Entonces veo el 192m predeterminado y también otra entrada para 1024m. Parece que lo último tiene prioridad. ¿Qué versión de JDK?
Kevin Welker
Estoy usando 1.6.0_26. Cuando se usa JConsole para inspeccionar el proceso de VisualVM, la sección de argumentos de VM en la pestaña Resumen de VM muestra los valores predeterminados y los valores que proporcioné, pero cuando se usa VisualVM para inspeccionarse a sí mismo, en Descripción general> Argumentos de JVM solo informa los valores predeterminados.
Mike Partridge
Estoy usando 1.6.0_20 y veo 2 líneas que enumeran Xmx. El primero es el predeterminado y el último es el nuevo valor. Copié su línea de comando directamente de su comentario anterior solo para estar seguro. Salida en Resumen> JVM incluye:-Xms24m -Xmx192m -Dsun.jvmstat.perdata.syncWaitMs=10000 -Xms256m -Xmx1024m
Kevin Welker
31

Empecé con

jvisualvm -J-Xms1024m -J-Xmx2048m

Y funcionó.

Prabhat Jha
fuente
Me gusta esto porque la ubicación del archivo .conf ha cambiado, pero esto todavía funciona y presumiblemente funcionaría para al menos algunos otros programas Java. Contrariamente a los comentarios anteriores, esto no es difícil de encontrar para los usuarios de Mac. El mundo usa Google, lo que nos trae aquí.
George Co
Como se indica en los comentarios a continuación, dentro de jvisualvm cuando mira los argumentos de VM, parece que no está funcionando, pero lo hace. Ya no recibo un error OOM.
George Co
22

En mac, puede configurarlos editando este archivo.

/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
fuente
Mantenga su respuesta centrada en la solución . Si desea agregar metainformación, hágalo en un comentario, por favor.
Martijn Pieters
Y con las ventanas etiquetadas con preguntas , su respuesta será difícil de encontrar para los usuarios de Mac. Considere la posibilidad de hacer una nueva pregunta de todos modos .
Martijn Pieters
No voté en esta publicación, no saque conclusiones precipitadas.
Martijn Pieters
¿Por qué harías una edición innecesaria en esta respuesta? ¿Para ganar más reputación? La respuesta ya estaba enfocada y clara como el cristal . Por cierto, ¡con cada una de tus ediciones estoy teniendo una calificación baja!
aspdeepak
2
Hice una edición aquí y dejé en claro por qué lo hice. Si desea insistir en agregar una respuesta solo para Mac a una pregunta dirigida a usuarios de Windows mediante etiquetas, está bien, pero mantenga la metainformación fuera de ella; su publicación debe contener solo una solución, no consejos de votación.
Martijn Pieters
0

Para Mac OSX 10.12+

Si ha descargado visualvm dmgde https://visualvm.github.io/download.html y lo ha movido al Applicationsdirectorio. Puede encontrar el archivo de configuración visualvm.confen la ubicación Applications/VisualVM.app/Contents/etc/visualvm.conf. En este archivo de configuración, puede cambiar el

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

a (por ejemplo)

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

Hardik Modha
fuente