0Pricing
Java Academy · Lección

Análisis con JDK Mission Control

Lea grabaciones de JFR

Análisis con JDK Mission Control es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 3 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.

¿Qué es JMC?

JDK Mission Control (JMC) es la herramienta gráfica para analizar grabaciones de JFR.

Abre un archivo .jfr y convierte los eventos sin procesar en vistas navegables: métodos activos, comportamiento del GC, contención de bloqueos, asignaciones y mucho más. También incluye una página de Análisis automatizado que señala posibles problemas.

Obtener JMC

JMC es una descarga independiente (se separó del JDK después de JDK 8).

Descárguelo de las compilaciones de JMC de Adoptium u Oracle, inícielo y abra el archivo .jfr mediante Archivo > Abrir archivo. No necesita ningún agente ni reiniciar la aplicación: analizará la grabación ya capturada.

La página de análisis automatizado

Lo primero que muestra JMC es el análisis automatizado: un conjunto de heurísticas que puntúan la grabación.

Resalta aspectos como pausas largas del GC, muchas asignaciones, hilos bloqueados y boxing de primitivos a objetos. Cada hallazgo tiene una gravedad y una breve explicación, un excelente punto de partida antes de profundizar manualmente.

Vista de perfilado de métodos

La página de perfilado de métodos agrega las muestras de ejecución en un árbol de llamadas.

Los métodos con mayor tiempo propio son sus hotspots de CPU. Puede alternar entre las vistas de arriba abajo (de quien llama a quien es llamado) y de abajo arriba (empezando por el método activo) para entender tanto qué es lento como quién lo llama.

Gráficos de llamas

JMC representa las muestras de los stacks como un gráfico de llamas: el ancho es proporcional al tiempo empleado.

Las mesetas anchas cerca de la parte superior del gráfico indican dónde consume realmente sus ciclos la CPU. Esta representación visual deja claro qué ruta de llamadas domina, mucho más rápido que leer una tabla ordenada.

Vista de recolección de basura

Las páginas del GC muestran la duración y la frecuencia de las pausas, así como qué recolector se ejecutó.

Busque pausas largas o frecuentes que perjudiquen la latencia. Una tasa de asignación alta suele correlacionarse con GC frecuentes de la generación joven; la solución es reducir la creación excesiva de objetos, no cambiar el recolector.

Hotspots de asignación

La vista de asignaciones en TLAB de JMC clasifica los lugares donde se crean objetos.

Combine esta información con el stack trace para encontrar la línea exacta que realiza asignaciones dentro de un bucle intensivo. A menudo, un pequeño cambio —reutilizar un búfer o evitar el autoboxing— reduce drásticamente la presión sobre el GC.

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // Autoboxing: each add boxes an int into an Integer object
        List<Integer> boxed = new ArrayList<>();
        for (int i = 0; i < 5; i++) boxed.add(i);
        System.out.println("Boxed " + boxed.size() + " Integers");
        System.out.println("JMC allocation view would flag this hotspot");
    }
}

Contención de bloqueos

Las vistas de instancias de bloqueo y de monitores de Java muestran los hilos que esperan en una sincronización.

Si muchos hilos se bloquean en el mismo monitor, ese bloqueo es un cuello de botella de escalabilidad. JMC muestra el objeto disputado y los stack traces de los hilos en espera para que pueda centrarse en la sección crítica correcta.

Vistas de hilos y latencia

La página de hilos muestra la línea temporal de cada hilo: en la CPU, aparcado, esperando en IO o bloqueado.

Así puede confirmar si una ralentización está limitada por CPU o por IO, exactamente la distinción de la lección sobre cuellos de botella. Las bandas anchas de «espera» indican que está limitado por IO o por bloqueos, no por el cálculo.

Del hallazgo a la solución

El flujo de trabajo es el siguiente: abra la grabación, lea el análisis automatizado, profundice en el área señalada (perfilado de métodos, GC o bloqueos), confirme el hallazgo con el gráfico de llamas y la vista de hilos y, después, formule una hipótesis.

Cambie una sola cosa, vuelva a grabar y compare con su línea base. JMC convierte un archivo binario en información útil para actuar.

Comparar grabaciones

Para demostrar que una optimización funcionó, compare una grabación «anterior» con otra «posterior».

Capture una JFR de referencia, aplique un cambio, capture otra y abra ambas en JMC. Observe las mismas vistas —perfilado de métodos, GC y asignaciones— una junto a la otra. Una mejora real se manifiesta como una reducción del tiempo propio, menos pausas del GC o una tasa de asignación menor. Si nada cambia, revierta el cambio.

Comprobación rápida

En las vistas de perfilado de métodos y gráficos de llamas de JMC, ¿qué indica el tiempo propio de un método (o una meseta ancha en la parte superior)?

Resumen

JMC lee las grabaciones de JFR y las convierte en información útil:

  • El análisis automatizado señala posibles problemas desde el principio.
  • El perfilado de métodos y los gráficos de llamas revelan los hotspots de CPU mediante el tiempo propio.
  • Las vistas del GC y de asignaciones ponen de manifiesto la creación excesiva de objetos.
  • Las vistas de bloqueos e hilos distinguen entre problemas limitados por CPU y problemas limitados por IO o bloqueos.
  • Profundice, formule una hipótesis, corrija una sola cosa, vuelva a grabar y compare.

Preguntas frecuentes

¿La lección «Análisis con JDK Mission Control» es gratis?

Sí — el texto completo de «Análisis con JDK Mission Control» 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 «Análisis con JDK Mission Control»?

Lea grabaciones de JFR 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 3 de 4.

¿Cuánto tiempo toma la lección «Análisis con JDK Mission Control»?

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. Identificación de cuellos de botella
  2. Java Flight Recorder
  3. Análisis con JDK Mission Control
  4. Flags comunes de ajuste de la JVM
← Volver a Java Academy