Uso de JConsole

JConsole (Java™ Monitoring and Management Console) es una herramienta gráfica que permite al usuario supervisar y gestionar el comportamiento de las aplicaciones Java.

Nota: Debido a que JConsole consume recursos significativos del sistema, Oracle recomienda su uso sólo en entornos de desarrollo para crear prototipos. La supervisión remota también es recomendable para aislar la aplicación JConsole de la plataforma que se está supervisando.

La herramienta JConsole se basa en la API java.lang.management. JConsole se conecta con aplicaciones que se ejecutan en la misma estación de trabajo o en una estación de trabajo remota. Las aplicaciones deben estar configuradas para permitir el acceso.

Cuando JConsole se conecta a una aplicación Java, notifica información sobre la aplicación. Los detalles incluyen uso de la memoria, las hebras en ejecución y las clases cargadas. Estos datos le permiten supervisar el comportamiento de su aplicación y de la JVM. La información es útil a la hora de entender los problemas de rendimiento, los de uso de la memoria, los bloqueos y los puntos muertos.

Configuración de JConsole para supervisar una aplicación Java

  1. La aplicación Java que desea supervisar debe iniciarse con opciones de línea de mandatos que la hagan accesible a JConsole desde otros sistemas u otros usuarios. JConsole puede conectarse a procesos propiedad del mismo usuario en el mismo sistema sin estas opciones. El conjunto de opciones más simple para la supervisión se muestra en el ejemplo siguiente:
    -Dcom.sun.management.jmxremote.port=<port number>
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
    El valor de <port number> debe ser un puerto libre en el sistema. En este ejemplo, el autenticar y ssl opciones de impedir que la contraseña de autenticación y cifrado mediante capa de sockets (SSL). El uso de estas opciones permite a JConsole, o a cualquier otro agente JMX, conectarse a la aplicación Java si tiene acceso al puerto especificado. Utilice estas opciones no seguras solamente en un entorno de desarrollo o prueba. Para obtener más información sobre la configuración de opciones de seguridad, consulte https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/connectors.html.
  2. Inicie JConsole escribiendo jconsole en la línea de mandatos. La vía de acceso debe contener el directorio bin de una instalación de Java.
  3. Se abre el diálogo Nueva conexión de JConsole: especifique el nombre de host y el número de puerto que ha especificado en el paso 1. Si está ejecutando JConsole en la misma estación de trabajo que la aplicación Java, deje el valor de nombre de host como localhost. Para un sistema remoto, establezca el valor de campo de host en el nombre de host o dirección IP de la estación de trabajo. Deje los campos Nombre de usuario y Contraseña en blanco si ha utilizado las opciones especificadas en el paso 1.
  4. Pulse Conectar. JConsole se inicia y muestra el separador Resumen.

Configuración de JConsole para supervisarse a sí misma

JConsole se puede supervisar a sí misma. Esta capacidad es útil para la resolución simple de problemas del entorno Java.
  1. Inicie JConsole escribiendo jconsole en la línea de mandatos. La vía de acceso debe contener el directorio bin del SDK.
  2. Se abre el diálogo Nueva conexión de JConsole: escriba localhost:0 en el campo Proceso remoto.
  3. Pulse Conectar. JConsole se inicia y muestra la pestaña de resumen.

Utilización de JConsole para supervisar una aplicación Java

El separador Resumen de JConsole muestra detalles clave sobre la JVM conectada. Desde aquí, puede seleccionar cualquier otro separador para obtener más detalles sobre un determinado aspecto. El separador Memoria muestra un historial del uso de cada agrupación de memoria de la JVM: lo más útil es el uso de la memoria de almacenamiento dinámico.

También puede solicitar que se lleve a cabo una recopilación de basura pulsando el botón Realizar recopilación de basura. Debe estar conectado con las opciones de seguridad inhabilitadas tal como se describe anteriormente, o ser autenticado como usuario de control.

El separador Hebras muestra el número de hebras actualmente en ejecución y una lista de sus ID.

Si pulsa un ID de hebra aparecerá el estado de la hebra y su rastreo de la pila actual.

El separador Clases muestra el número actual de clases cargadas y el número de clases cargadas y descargadas desde que se inició la aplicación. Si selecciona el recuadro de selección Salida detallada podrá desactivar y activar la salida de carga de clases detallada para ver una lista de clases cargadas en la JVM de cliente. La salida se visualiza en la salida de stderr de la JVM del cliente.

El separador MBeans le permite inspeccionar el estado de los MBeans de la plataforma, que proporcionan más detalle sobre la JVM. Para obtener más información sobre los MBeans y las extensiones MXBean J9 , consulte la sección Interfaz de gestión de lenguajes de la documentación de Eclipse OpenJ9 .

Por último, la pestaña VM proporciona información sobre el entorno en el que se ejecuta la aplicación Java, incluidos los argumentos de JVM y la vía de acceso de clases actual.

Resolución de problemas de JConsole

JConsole es una aplicación Swing. La ejecución de JConsole en la misma estación de trabajo que la aplicación Java que desea supervisar afecta al rendimiento de la aplicación Java. Puede utilizar JConsole para conectarse a una JVM que se ejecute en una estación de trabajo remoto para reducir el efecto en el rendimiento de aplicación.

Puesto que JConsole es una aplicación Java, puede pasarle opciones de línea de mandatos Java a través de la aplicación que inicia JConsole prefijándolas con –J. Por ejemplo, para cambiar el tamaño máximo de almacenamiento dinámico que utiliza JConsole, añada la opción de línea de mandatos -J-Xmx< size>.

JConsole utiliza la API Attach para conectarse a una aplicación y solo se podrá conectar a otras máquinas virtuales J9. Si experimenta problemas al utilizar JConsole para supervisar una aplicación remota, la causa raíz podría ser la API Attach. Para diagnosticar problemas, consulte Java Attach API.

Limitaciones conocidas

Uso de la lista de procesos locales
La lista de procesos locales no funciona. Utilice localhost:<port> en el campo de entrada de texto Proceso remoto para conectarse a una JVM local.
Uso de la CPU en el separador Visión general
El uso de la CPU no funciona.

Información adicional

Para obtener más detalles sobre JConsole y las definiciones de los valores que se muestran, consulte https://docs.oracle.com/javase/8/docs/technotes/guides/management/index.html en la documentación de Oracle .