Ejecutar JVisualVM (Windows XP, Sun Java 1.6.0.13, VM de cliente de 32 bits) para monitorear una aplicación distante (Linux, Sun Java 1.6.0.07, VM de servidor de 64 bits) Antes de iniciar la aplicación remota real, pongo en marcha de la máquina remota jstatd
utilizando una política de todos los accesos:Obtener el volcado del heap desde una aplicación remota en Java usando JVisualVM
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
Entonces comienzo de la aplicación real utilizando la línea de comandos
java -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=3333
compileTest.Main
Desde la máquina cliente, I puede ver la aplicación distante y monitorearla. También puedo hacer un volcado de subprocesos, etc. Desafortunadamente, el botón de volcado dinámico está atenuado.
¿Cómo puedo obtener un heap-dump de una aplicación remotamente monitoreada utilizando JVisualVM?
Intenté usar jConsole. Con jConsole, es posible crear un volcado de montón distante utilizando la operación com.sun.management.HotSpotDiagnostic dumpHeap. Quiero que el volcado sea transferido al lado del cliente y analizado usando las herramientas provistas por JVisualVM. ¿Cómo puedo hacer esto?
corriendo jvisualvm como el mismo usuario que ejecuta el proceso java puede ayudar – rogerdpack
@rogerdpack buen punto! Navegué para llegar a esta pregunta/tema, ya que tengo la misma pregunta que http://stackoverflow.com/questions/8799929/visualvm-unable-to-sampler-memory, y creo que su declaración/suposición es correcta. Cuando ejecuto tomcat/tomee a través de mi NetBeans IDE en mi PC/servidor desarrollador, entonces el botón Sampler> Memory está habilitado, pero el botón Sampler> Memory está deshabilitado en el servidor de producción, ya que tomcat/tomee se está ejecutando como servicio de Windows, y 'm' no 'inició sesión en el servicio de producción como sistema o servicio local. :( – Howard