0Pricing
Java Academy · Lección

Indicadores de ajuste del GC y creación de perfiles con JVisualVM

Establezca indicadores de tamaño del heap, active el registro del GC y use JVisualVM para crear perfiles del uso del heap en una aplicación en ejecución.

Indicadores de ajuste del GC y creación de perfiles con JVisualVM es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.

¿Por qué ajustar el GC?

La configuración predeterminada del GC funciona bien para muchas aplicaciones, pero las cargas de trabajo de alto rendimiento o baja latencia pueden requerir ajustes. Mida primero; nunca ajuste a ciegas.

Opciones de tamaño de la memoria heap

Establezca la memoria heap inicial (-Xms) y máxima (-Xmx). En producción, establézcalas con el mismo valor para evitar pausas por redimensionamiento dinámico. Comience con el 60-70 % de la RAM disponible.

// Example production flags:
java -Xms2g -Xmx2g -XX:+UseG1GC MyApp
// Avoid:
java -Xmx8g MyApp  // initial = 256m, max = 8g → resizing pauses

Tamaño de la generación joven

Aumente la generación joven para las aplicaciones con muchas asignaciones y reduzca así la frecuencia del GC menor. Use -Xmn o -XX:NewRatio (proporción antigua:joven, valor predeterminado: 2).

// Set Young Gen to 1 GB:
java -Xmx4g -Xmn1g MyApp
// Or via ratio:
java -Xmx4g -XX:NewRatio=3 MyApp  // 3GB old, 1GB young

Objetivo de pausa de G1

Establezca -XX:MaxGCPauseMillis para indicar a G1 la pausa máxima deseada. G1 ajusta su conjunto de colecciones para alcanzar el objetivo, pero este es una meta, no una garantía estricta.

java -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xmx8g MyApp
// G1 will try to keep pauses under 100 ms

Número de hilos del GC

Controle el paralelismo con -XX:ParallelGCThreads (hilos de tipo stop-the-world) y -XX:ConcGCThreads (hilos concurrentes para G1/ZGC).

// On an 8-core machine:
java -XX:+UseG1GC -XX:ParallelGCThreads=8 -XX:ConcGCThreads=2 MyApp

Activación del registro del GC (JVM 9+)

Use el framework Xlog para capturar eventos del GC. Analice los registros sin conexión para detectar pausas largas, picos de asignaciones y fallos de promoción.

java -Xlog:gc*:file=gc.log:time,uptime,level,tags:filecount=5,filesize=20m MyApp

Advertencia sobre objetos humongous

Los objetos cuyo tamaño supera el 50 % de una región de G1 son "humongous" y omiten la generación joven para pasar directamente a la generación antigua. Esto puede provocar fragmentación. Mantenga pequeños los objetos grandes o aumente el tamaño de la región.

// Increase G1 region size (range: 1 MB to 32 MB, must be power of 2):
java -XX:+UseG1GC -XX:G1HeapRegionSize=16m -Xmx16g MyApp

Descripción general de JVisualVM

JVisualVM (incluido en JDK 8 y descargable para los JDK más recientes) proporciona una interfaz gráfica para supervisar la memoria heap, el GC, la CPU y los hilos de procesos JVM locales y remotos.

Conexión a una JVM remota

Active JMX en el servidor para conectarse remotamente con JVisualVM. Añada estas opciones al inicio de la JVM de destino.

// Remote JVM flags:
java -Dcom.sun.management.jmxremote \
     -Dcom.sun.management.jmxremote.port=9090 \
     -Dcom.sun.management.jmxremote.authenticate=false \
     -Dcom.sun.management.jmxremote.ssl=false \
     MyApp

Volcado de memoria heap desde JVisualVM

En JVisualVM, haga clic con el botón derecho en el proceso → "Heap Dump". El volcado muestra los objetos activos, los tamaños retenidos y las referencias. Use la "OQL Console" para consultar el volcado con una sintaxis similar a SQL.

Perfilado de CPU con JVisualVM

Cambie a la pestaña Profiler y haga clic en "CPU". JVisualVM instrumenta los métodos y muestra las pilas de llamadas más activas. Detenga el profiler para ver qué métodos consumieron más tiempo.

Java Flight Recorder frente a JVisualVM

JFR tiene una sobrecarga menor (aproximadamente del 1-2 %) y es adecuado para producción. JVisualVM con perfilado tiene una sobrecarga mayor y es más apropiado para desarrollo. Use JFR en producción y JVisualVM para la depuración durante el desarrollo.

Comprobación rápida

¿Qué opción establece la pausa máxima objetivo del GC para G1?

Resumen

Establezca -Xms == -Xmx en producción. Ajuste -XX:MaxGCPauseMillis para G1. Active el registro del GC con Xlog. Use JVisualVM para depurar durante el desarrollo y JFR para el perfilado en producción.

Preguntas frecuentes

¿La lección «Indicadores de ajuste del GC y creación de perfiles con JVisualVM» es gratis?

Sí — el texto completo de «Indicadores de ajuste del GC y creación de perfiles con JVisualVM» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Indicadores de ajuste del GC y creación de perfiles con JVisualVM»?

Establezca indicadores de tamaño del heap, active el registro del GC y use JVisualVM para crear perfiles del uso del heap en una aplicación en ejecución. Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Java Academy?

No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Indicadores de ajuste del GC y creación de perfiles con JVisualVM»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Java Academy?

Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Regiones del heap de la JVM y ciclo de vida de los objetos
  2. Algoritmos de GC: Serial, G1, ZGC y Shenandoah
  3. Detección y corrección de fugas de memoria
  4. Indicadores de ajuste del GC y creación de perfiles con JVisualVM
← Volver a Java Academy