Translate

lunes, 25 de mayo de 2026

¿Cómo monitorear la JVM desde la consola?


Cuando trabajamos con Java, una de las herramientas más conocidas para monitoreo es VisualVM.

Nos permite analizar memoria, CPU, hilos, GC y mucho más… todo desde una interfaz gráfica muy cómoda.

Pero hay un problema: ¿Qué pasa cuando estás en un servidor sin entorno gráfico?

Ahí es donde VisualVM ya no alcanza.


Java ya trae todo lo necesario… solo que más low level.


1. jps – listar procesos Java


jps -l


Salida típica:

1234 com.miapp.Main

5678 org.apache.catalina.startup.Bootstrap


Es el primer paso: obtener el PID.


2. jstat – métricas del GC


jstat -gc 1234 1000


Muestra:

  • uso de memoria
  • comportamiento del Garbage Collector
  • generaciones (Eden, Survivor, Old)


Ideal para detectar problemas de memoria en vivo.


3. jstack – dump de hilos


jstack 1234


Te da:

  • todos los threads
  • estados (RUNNABLE, BLOCKED, etc.)
  • posibles deadlocks


Clave para debugging de concurrencia.


4. jmap – análisis de memoria


jmap -heap 1234


O histogramas:


jmap -histo 1234


Podés ver qué objetos están ocupando memoria.


5. jcmd – el reemplazo moderno

Esta es la más importante.


jcmd 1234 help


Ejemplos:

jcmd 1234 GC.heap_info

jcmd 1234 Thread.print

jcmd 1234 GC.run


Es como un “super comando” que reemplaza a varios anteriores.


Veamos un ejemplo: 

En entornos reales se suele hacer esto:


1. Servidor (Linux sin GUI)

  • Aplicación Java corriendo
  • JMX habilitado


2. Diagnóstico:

  • CLI (jcmd, jstat, etc.)
  • o conexión remota desde VisualVM


Este enfoque es estándar en sistemas productivos.


VisualVM no es “la herramienta”, es solo un cliente visual.

Las verdaderas herramientas son:

  • APIs internas de la JVM
  • JMX
  • comandos como jcmd


VisualVM simplemente las consume y las muestra bonito.


No hay comentarios.:

Publicar un comentario