Quando aplicações Java apresentam respostas lentas ou indisponibilidade, a causa raiz frequentemente reside em problemas no nível da JVM: pausas na coleta de lixo (GC) que interrompem o processamento de requisições, vazamentos de memória que consomem gradualmente o espaço do heap ou contenção de threads que bloqueia operações concorrentes. O monitoramento da JVM no Application Monitoring rastreia a atividade de GC, o uso de memória e os estados das threads, fornecendo as métricas necessárias para detectar e diagnosticar esses problemas antes que afetem os usuários finais.
Pré-requisitos
Uma aplicação conectada ao ARMS Application Monitoring com um agente Java instalado
Visualizar métricas da JVM
Faça login no console do ARMS. No painel de navegação à esquerda, escolha Application Monitoring > Application List.
-
Na página Application List, selecione uma região na barra de navegação superior e clique em nome da aplicação desejada.
NotaOs ícones na coluna Language indicam a linguagem da aplicação:
: Aplicação Java
: Aplicação Go
: Aplicação PythonHífen (-): aplicação monitorada no Managed Service for OpenTelemetry.
No painel de navegação à esquerda, clique em Application Details.
-
Na página Application Details, selecione a instância desejada no painel à esquerda e clique em aba JVM monitoring.

A aba JVM monitoring exibe gráficos de séries temporais para atividade de GC, memória heap, metaspace, memória non-heap, buffer direto e threads da JVM.
Alternar entre visualizações instantâneas e acumuladas
Clique em Instantaneous ou Accumulated no canto superior direito dos gráficos Instantaneous Count e Instantaneous Duration para alternar entre dados de GC por intervalo e cumulativos.
Mostrar ou ocultar métricas individuais
Clique em nome de uma métrica (por exemplo, FullGC Count) em qualquer gráfico para mostrar ou ocultar essa métrica.
Cada gráfico deve exibir pelo menos uma métrica. Se apenas uma métrica estiver visível, não será possível ocultá-la.
Comparar métricas entre intervalos de tempo
Clique em ícone
em um gráfico para visualizar estatísticas de métricas de um período específico ou comparar o mesmo período em dias diferentes.
Visualizar APIs relacionadas
Clique em ícone View API no canto superior direito dos seguintes gráficos para ver detalhes no nível da API relacionados a cada métrica:
Heap Memory Details / 1 Min
Metadata Details / 1 Min
Non-Heap Memory / 1 Min
Direct Buffer / 1 Min
JVM Threads / 1 Min
Referência de métricas
Métricas de GC
Os gráficos Instantaneous Count e Instantaneous Duration mostram a atividade de GC. Ambos suportam as visualizações Instantaneous (por intervalo) e Accumulated (cumulativa).
|
Métrica |
Descrição |
|
Contagem de Full GC |
Número de coletas de lixo completas no heap. Full GCs frequentes geralmente indicam pressão no heap ou vazamento de memória. |
|
Contagem de Young GC |
Quantidade de coletas de lixo na geração jovem. |
|
Duração do Full GC |
Tempo gasto em Full GCs. Pausas longas aumentam diretamente a latência de resposta da aplicação. |
|
Duração do Young GC |
Tempo despendido nas coletas de lixo da geração jovem. |
As medições de latência de GC variam conforme o coletor:
ZGC e Shenandoah: Estes coletores executam a maior parte do trabalho de GC simultaneamente às threads da aplicação, minimizando pausas. Pauses mede a duração do stop-the-world (STW), tipicamente abaixo de 1 ms. Cycles mede a duração total do GC, incluindo as fases concorrentes.
Todos os outros coletores (como G1, CMS e Parallel): As métricas de latência medem apenas a duração do STW — o tempo durante o qual todas as threads da aplicação Java ficam suspensas para a coleta de lixo.
Memória heap
O gráfico Heap Memory Details / 1 Min detalha o uso do heap por pool de memória.
|
Métrica |
Descrição |
|
Memória heap total |
Total de memória heap atualmente utilizada pela JVM (bytes). |
|
Geração antiga |
Memória heap ocupada por objetos de longa duração (bytes). Um crescimento constante sem aumento correspondente no volume de dados pode indicar vazamento de memória. |
|
Geração jovem (survivor space) |
Memória heap no survivor space, que retém objetos que sobreviveram a pelo menos um Young GC (bytes). |
|
Geração jovem (eden space) |
Memória heap no eden space, onde novos objetos são alocados (bytes). |
Metaspace
O gráfico Metadata Details / 1 Min rastreia o armazenamento de metadados de classes.
|
Métrica |
Descrição |
|
Tamanho do metaspace |
Memória utilizada pelo metaspace da JVM (bytes). O metaspace armazena metadados de classes e substituiu a geração permanente (PermGen) no JDK 8. Crescimento ilimitado pode indicar vazamento de classloader. |
Memória non-heap
O gráfico Non-Heap Memory / 1 Min monitora a memória alocada fora do heap.
|
Métrica |
Descrição |
|
Memória non-heap máxima |
Limite superior de memória non-heap disponível para a JVM (bytes). |
|
Memória non-heap utilizada |
Memória non-heap atualmente em uso (bytes). |
Buffer direto
O gráfico Direct Buffer / 1 Min rastreia buffers off-heap alocados por meio de java.nio.ByteBuffer.allocateDirect().
|
Métrica |
Descrição |
|
Buffer direto total |
Capacidade total dos buffers diretos de bytes (bytes). |
|
Buffer direto utilizado |
Memória de buffer direto atualmente em uso (bytes). |
Threads da JVM
O gráfico JVM Threads / 1 Min exibe os estados das threads com base na enumeração java.lang.Thread.State.
|
Métrica |
Descrição |
|
Total de threads |
Número total de threads ativas. Um aumento sustentado sem elevação correspondente na carga pode indicar vazamento de threads. |
|
Threads em deadlock |
Threads em estado de deadlock. Qualquer valor acima de zero exige investigação imediata. |
|
Novas threads |
Threads criadas, mas ainda não iniciadas. |
|
Threads bloqueadas |
Threads bloqueadas aguardando um lock de monitor. Contagens elevadas indicam contenção de locks. |
|
Threads executáveis |
Threads em execução ativa ou prontas para executar. |
|
Threads finalizadas |
Threads que concluíram a execução. |
|
Threads em espera temporizada |
Threads aguardando com um tempo limite definido (por exemplo, |
|
Threads em espera |
Threads aguardando indefinidamente que outra thread execute uma ação. |
Memória da JVM e o comando top
O Application Monitoring coleta dados de memória da JVM por meio do Java Management Extensions (JMX), que exclui algumas áreas de memória non-heap dos processos Java. Por esse motivo, a soma da memória heap e non-heap exibida no Application Monitoring difere significativamente do Resident Memory Size em KiB (RES) relatado pelo comando top.
Para obter um detalhamento completo dessa diferença, consulte Detalhes da memória da JVM.