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