0Pricing
Java Academy · Aula

Analisando com o JDK Mission Control

Leia gravações do JFR.

Analisando com o JDK Mission Control é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.

O que é JMC?

Controle de Missão do JDK (JMC) é a ferramenta gráfica para analisar gravações do JFR.

Ela abre um arquivo .jfr e transforma eventos brutos em visualizações navegáveis: métodos quentes, comportamento da coleta de lixo, contenção de bloqueios, alocação e muito mais. Ela também inclui uma página de Análise automatizada que sinaliza possíveis problemas.

Obtendo o JMC

JMC é um aplicativo independente (ele foi separado do JDK depois do JDK 8).

Obtenha-o nas compilações do JMC da Adoptium ou da Oracle, inicie-o e abra seu arquivo .jfr usando Arquivo > Abrir arquivo. Nenhum agente nem reinicialização do aplicativo é necessária — você analisa a gravação já capturada.

A página de análise automatizada

A primeira coisa que o JMC exibe é a Análise automatizada: um conjunto de heurísticas que avalia sua gravação.

Ela destaca itens como pausas longas da coleta de lixo, alocação elevada, linhas de execução bloqueadas e conversão automática de valores primitivos em objetos. Cada descoberta tem uma gravidade e uma breve explicação — um excelente ponto de partida antes de investigar manualmente.

Visão de criação de perfil de métodos

A página de Criação de perfil de métodos agrega amostras de execução em uma árvore de chamadas.

Os métodos com maior tempo próprio são os pontos críticos da CPU. Você pode alternar entre as visões de cima para baixo (do chamador ao método chamado) e de baixo para cima (primeiro o método mais ativo) para entender tanto o que é lento quanto quem o chama.

Gráficos de chama

O JMC renderiza amostras de pilha como um gráfico de chama: a largura é proporcional ao tempo gasto.

Os platôs largos próximos ao topo do gráfico mostram onde a CPU realmente gasta seus ciclos. Essa visualização deixa evidente qual caminho de chamadas predomina, muito mais rápido do que ler uma tabela ordenada.

Visão da coleta de lixo

As páginas de coleta de lixo mostram a duração e a frequência das pausas, além de qual coletor foi executado.

Procure pausas longas ou frequentes que prejudiquem a latência. Uma taxa de alocação elevada geralmente está relacionada a coletas frequentes da geração jovem — a solução é reduzir a criação e o descarte de objetos, não trocar o coletor.

Pontos críticos de alocação

A visão de Alocações de TLAB do JMC classifica os locais onde os objetos são criados.

Combine-a com o rastreamento de pilha para encontrar a linha exata que faz alocações em um loop de alta atividade. Muitas vezes, uma pequena alteração — reutilizar uma área de armazenamento ou evitar a conversão automática para objetos — reduz drasticamente a pressão sobre a coleta de lixo.

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");
    }
}

Contenção de bloqueios

As visões de Instâncias de bloqueio e de monitor do Java revelam linhas de execução aguardando sincronização.

Se muitas linhas de execução forem bloqueadas pelo mesmo monitor, esse bloqueio será um gargalo de escalabilidade. O JMC mostra o objeto em contenção e os rastreamentos de pilha das linhas de execução em espera, para que você possa direcionar a seção crítica correta.

Visões de linhas de execução e latência

A página de Linhas de execução mostra a linha do tempo de cada uma: em execução na CPU, suspensa, aguardando IO ou bloqueada.

É assim que você confirma se uma lentidão é limitada pela CPU ou por IO — exatamente a distinção apresentada na lição sobre gargalos. Faixas largas de 'espera' significam que você está limitado por IO ou por bloqueios, não pelo processamento.

Da descoberta à correção

O fluxo de trabalho é: abra a gravação, leia a Análise automatizada, aprofunde-se na área sinalizada (criação de perfil de métodos, coleta de lixo ou bloqueios), confirme com o gráfico de chama e a visão de linhas de execução e, então, formule uma hipótese.

Altere uma coisa, grave novamente e compare com sua linha de base. O JMC transforma um arquivo binário em informações úteis para agir.

Comparando gravações

Para comprovar que uma otimização funcionou, compare uma gravação de 'antes' com uma de 'depois'.

Capture uma gravação JFR de linha de base, aplique uma alteração, capture outra e abra ambas no JMC. Observe as mesmas visões — criação de perfil de métodos, coleta de lixo e alocação — lado a lado. Uma melhoria real aparece como redução do tempo próprio, menos pausas da coleta de lixo ou uma taxa de alocação menor. Se nada mudou, desfaça a alteração.

Verificação rápida

Nas visões de criação de perfil de métodos e de gráfico de chama do JMC, o que o tempo próprio de um método (ou um platô largo no topo) indica?

Recapitulação

O JMC lê gravações do JFR e as torna úteis para agir:

  • A Análise automatizada sinaliza possíveis problemas logo de início.
  • A criação de perfil de métodos e os gráficos de chama revelam pontos críticos da CPU por meio do tempo próprio.
  • As visões de coleta de lixo e alocação expõem a criação e o descarte de objetos.
  • As visões de bloqueios e linhas de execução distinguem o que é limitado pela CPU do que é limitado por IO ou por bloqueios.
  • Aprofunde-se, formule uma hipótese, corrija uma coisa, grave novamente e compare.

Perguntas Frequentes

A aula “Analisando com o JDK Mission Control” é grátis?

Sim — o texto completo de “Analisando com o JDK Mission Control” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.

O que vou aprender em “Analisando com o JDK Mission Control”?

Leia gravações do JFR. Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Java Academy?

Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Analisando com o JDK Mission Control”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Java Academy?

Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Identificando gargalos
  2. Java Flight Recorder
  3. Analisando com o JDK Mission Control
  4. Opções comuns de ajuste da JVM
← Voltar para Java Academy