Translate

domingo, 31 de mayo de 2026

jstat en Java: cómo entender el Garbage Collector desde la consola


Cuando hablamos de monitoreo en Java, muchos van directo a VisualVM.

Pero en entornos reales (servidores, contenedores, CI), necesitás herramientas sin GUI. Ahí aparece jstat.

Una herramienta liviana, incluida en la JVM, que te permite ver qué está pasando con la memoria y el Garbage Collector en tiempo real.

jstat (Java Virtual Machine Statistics Monitoring Tool) es una utilidad de consola que permite consultar métricas internas de la JVM.

  • Uso de memoria
  • Actividad del GC
  • Cantidad de recolecciones
  • Tiempos acumulados


Primero necesitás el PID del proceso:


jps -l


Después ejecutás:


jstat -gc <pid> 1000


Esto imprime estadísticas cada 1 segundo.


 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU     YGC   YGCT   FGC    FGCT     GCT

1024.0 1024.0  0.0   512.0   8192.0   4096.0   16384.0   8000.0   5120.0 4800.0 1024.0  900.0     10    0.25    2     0.50     0.75


Ahora lo importante: entender esto 👇

Generación joven (Young Gen)


S0C / S1C → tamaño de Survivor 0 y 1

S0U / S1U → uso actual

EC → tamaño de Eden

EU → uso de Eden

Acá viven los objetos nuevos.


Generación vieja (Old Gen)

OC → capacidad

OU → uso


👉 Si esto crece mucho y no baja → posible problema de memoria.


Metaspace

MC / MU → capacidad y uso

CCSC / CCSU → Compressed Class Space


👉 Relacionado con clases cargadas.


YGC → cantidad de GC jóvenes

YGCT → tiempo total en GC joven

FGC → cantidad de Full GC

FGCT → tiempo total en Full GC

GCT → tiempo total de GC


Veamos un caso saludable

  • Eden sube y baja constantemente
  • YGC aumenta progresivamente
  • Old Gen estable


👉 Todo OK.


Posible memory leak

  • OU (Old Gen) sube y nunca baja
  • Full GC frecuentes


👉 Algo está reteniendo objetos.


🟠 Problema de GC

  • YGC muy alto en poco tiempo
  • GCT creciendo rápido


👉 La app está gastando demasiado tiempo en GC.


⚙️ Otros modos útiles

-gcutil (más simple y legible)


jstat -gcutil <pid> 1000


Salida en porcentajes:

 S0     S1     E      O      M     CCS    YGC   YGCT   FGC   FGCT     GCT

 0.00  50.00  60.00  48.00  93.75 87.89   10    0.25    2     0.50     0.75


👉 Ideal para monitoreo rápido.


Ejecutar N veces

jstat -gc <pid> 1000 10


👉 Ejecuta 10 veces y termina.


jstat es una herramienta simple pero extremadamente poderosa.


✔ Ideal para servidores sin GUI

✔ Perfecta para debugging en vivo

✔ Fundamental para entender el GC

No hay comentarios.:

Publicar un comentario