Java Academy · Aula

Opções de Ajuste do GC e Criação de Perfis com JVisualVM

Defina opções de tamanho do heap, ative o registro do GC e use JVisualVM para analisar o uso do heap em um aplicativo em execução.

Aula 4 de 414 etapas

Opções de Ajuste do GC e Criação de Perfis com JVisualVM é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 4 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.

Por que ajustar a coleta de lixo?

As configurações padrão da coleta de lixo funcionam bem para muitos aplicativos, mas cargas de trabalho de alto volume ou baixa latência podem exigir ajustes. Meça primeiro — nunca faça ajustes às cegas.

Sinalizadores do tamanho da heap

Defina a heap inicial (-Xms) e máxima (-Xmx). Em produção, defina os dois valores como iguais para evitar pausas causadas pelo redimensionamento dinâmico. Comece com 60–70% da RAM disponível.

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

Tamanho da geração jovem

Aumente a geração jovem em aplicativos com muitas alocações para reduzir a frequência da coleta de lixo menor. Utilize -Xmn ou -XX:NewRatio (proporção Antiga:Jovem, padrão 2).

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

Meta de pausa do G1

Defina -XX:MaxGCPauseMillis para informar ao G1 a pausa máxima desejada. O G1 ajusta seu conjunto de coleta para atingir a meta — mas ela é um objetivo, não uma garantia rígida.

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

Quantidade de threads da coleta de lixo

Controle o paralelismo com -XX:ParallelGCThreads (threads que interrompem o mundo) e -XX:ConcGCThreads (threads concorrentes para G1/ZGC).

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

Ativando o registro da coleta de lixo (JVM 9+)

Utilize a estrutura Xlog para capturar eventos da coleta de lixo. Analise os registros posteriormente para identificar pausas longas, picos intensos de alocação e falhas de promoção.

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

Aviso sobre objetos enormes

Objetos maiores que 50% de uma região do G1 são "enormes" e ignoram a geração jovem, indo diretamente para a geração antiga. Isso pode causar fragmentação. Mantenha os objetos grandes pequenos ou aumente o tamanho da região.

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

Visão geral do JVisualVM

O JVisualVM (incluído no JDK 8 e disponível para download nas versões mais recentes do JDK) fornece uma GUI para monitorar a heap, a coleta de lixo, a CPU e as threads de processos locais e remotos da JVM.

Conectando-se a uma JVM remota

Ative o JMX no servidor para conectar-se remotamente ao JVisualVM. Adicione estes sinalizadores à inicialização da 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

Instantâneo da heap com o JVisualVM

No JVisualVM, clique com o botão direito do mouse no processo → "Instantâneo da heap". O instantâneo mostra objetos ativos, tamanhos retidos e referências. Utilize o "Console do OQL" para consultar o instantâneo com uma sintaxe semelhante à SQL.

Criação de perfil da CPU com o JVisualVM

Mude para a aba de criação de perfil e clique em "CPU". O JVisualVM instrumenta métodos e mostra as pilhas de chamadas mais ativas. Interrompa a criação de perfil para ver quais métodos consumiram mais tempo.

Java Flight Recorder versus JVisualVM

O JFR tem menor sobrecarga (aproximadamente 1–2%) e é adequado para produção. O JVisualVM com criação de perfil tem maior sobrecarga e é mais indicado para desenvolvimento. Utilize o JFR em produção e o JVisualVM para depuração durante o desenvolvimento.

Verificação rápida

Qual sinalizador define a pausa máxima desejada da coleta de lixo para o G1?

Recapitulação

Defina -Xms == -Xmx em produção. Ajuste -XX:MaxGCPauseMillis para o G1. Ative o registro da coleta de lixo com Xlog. Utilize o JVisualVM para depuração durante o desenvolvimento e o JFR para criação de perfis em produção.

Grátis para começar

Aprenda Java com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
104
Aulas
374

Perguntas Frequentes

A aula “Opções de Ajuste do GC e Criação de Perfis com JVisualVM” é grátis?

Sim — o texto completo de “Opções de Ajuste do GC e Criação de Perfis com JVisualVM” é 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 “Opções de Ajuste do GC e Criação de Perfis com JVisualVM”?

Defina opções de tamanho do heap, ative o registro do GC e use JVisualVM para analisar o uso do heap em um aplicativo em execução. 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 4 de 4.

Quanto tempo leva a aula “Opções de Ajuste do GC e Criação de Perfis com JVisualVM”?

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. Regiões do Heap da JVM e Ciclo de Vida dos Objetos
  2. Algoritmos de GC: Serial, G1, ZGC e Shenandoah
  3. Detecção e Correção de Vazamentos de Memória
  4. Opções de Ajuste do GC e Criação de Perfis com JVisualVM
← Voltar para Java Academy