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.
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 pausesTamanho 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 youngMeta 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 msQuantidade 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 MyAppAtivando 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 MyAppAviso 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 MyAppVisã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 \
MyAppInstantâ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.
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
- Regiões do Heap da JVM e Ciclo de Vida dos Objetos
- Algoritmos de GC: Serial, G1, ZGC e Shenandoah
- Detecção e Correção de Vazamentos de Memória
- Opções de Ajuste do GC e Criação de Perfis com JVisualVM