Ferramenta de monitoramento de linha de comando JVM jstat (Ferramenta de monitoramento de estatísticas JVM)

Introdução ao jstat

jstat (JVM Statistics Monitoring Tool): Uma ferramenta de linha de comando para monitorar várias informações de status de execução de máquinas virtuais. Ele pode exibir dados em execução, como carregamento de classe, memória, coleta de lixo, compilação JIT, etc. no processo da máquina virtual local ou remota.

Os parâmetros da opção são os seguintes:

Tipos de contente ilustrar
Carregamento de classe relacionado -classe Exiba as informações relevantes do ClassLoader: o número de classes carregadas e descarregadas, o espaço total, o tempo consumido pelo carregamento de classes, etc.
Relacionado à coleta de lixo -gc Exibe informações de heap relacionadas ao GC. Incluindo informações como a capacidade da área do Éden, as duas áreas de Sobrevivente, a geração antiga, a geração permanente, etc., o espaço usado e o tempo total do GC.
-gcapacidade- O conteúdo de exibição é basicamente o mesmo que -gc, mas a saída se concentra principalmente no espaço máximo e mínimo usado por cada área do heap Java
-gcutil A exibição é basicamente a mesma de -gc, mas a saída se concentra no espaço usado como uma porcentagem do espaço total
-gcausa Igual a -gcutil, mas também gera a causa do último GC ou que está ocorrendo no momento
-gcnew Exibir o status do GC de nova geração
-gcnewcapacity O conteúdo de exibição é basicamente o mesmo que -gcnew, e a saída se concentra principalmente no espaço máximo e mínimo usado
-gfrio Exibir status de GC de velhice
-gcoldcapacity O conteúdo de exibição é basicamente o mesmo que -gcold, e a saída se concentra principalmente no espaço máximo e mínimo usado
-gcpermcapacity Exibe o espaço máximo e mínimo usado pela geração permanente
Relacionado ao JIT -compilador Exibe informações como métodos compilados pelo compilador JIT e demorados
-compilação de impressão Métodos de saída que foram compilados por JIT

uso jstat

1) Informações estatísticas de carregamento de classe

insira a descrição da imagem aqui

[root@bogon ~]# jps -l
781 sun.tools.jps.Jps
25887 org.apache.catalina.startup.Bootstrap
[root@bogon ~]# jstat -class 25887
Loaded  Bytes  Unloaded  Bytes     Time   
  3377  6492.3       37    53.6      30.34
contente ilustrar
Carregado O número de classes carregadas
Bytes O tamanho do espaço ocupado pela classe carregada
Descarregado Número de classes não carregadas
Bytes Tamanho da área ocupada da classe descarregada
Tempo O carregamento da classe leva tempo

Imprima 5 vezes em intervalo de 1s

insira a descrição da imagem aqui

tempo de execução do programa de saída

insira a descrição da imagem aqui

jstat -class -t 25887 1000 5

Imprima o cabeçalho a cada 3 vezes

insira a descrição da imagem aqui

jstat -class -h 3 -t 25887 1000

2) Visualize estatísticas de compilação JIT

insira a descrição da imagem aqui

[root@bogon ~]# jps -l
8264 sun.tools.jps.Jps
7706 ParamTest.jar
25887 org.apache.catalina.startup.Bootstrap
[root@bogon ~]# jstat -compiler 7706
Compiled Failed Invalid   Time   FailedType FailedMethod
      10      0       0     0.00          0   
contente ilustrar
Compilado Número de classes compiladas pelo JIT
Fracassado Número de falhas de compilação JIT
Inválido Quantidade indisponível
Tempo Tempo
FailedType tipo de falha
FailedMethod método de falha

insira a descrição da imagem aqui
insira a descrição da imagem aqui

jstat -printcompilation 7706

3) Estatísticas de coleta de lixo

Uma breve introdução às estatísticas de lixo

insira a descrição da imagem aqui

[root@bogon ~]# jstat -gc 25887
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
2880.0 2880.0  0.0   548.0  23552.0   8410.8   58488.0    41320.5   21632.0 20846.0 2432.0 2221.7    215    1.416   3      0.247    1.663
contente ilustrar
S0C Tamanho da primeira área de Sobrevivente (KB)
S1C Tamanho da segunda área de Sobrevivente (KB)
S0U O tamanho usado da primeira área de Sobrevivente (KB)
S1U O tamanho usado da segunda área de Sobrevivente (KB)
CE Tamanho da área do Éden (KB)
EU Use o tamanho da área do Éden (KB)
CO Tamanho da área antiga (KB)
ONDE O tamanho usado da área antiga (KB)
MC Tamanho da área do método (KB)
UM Use o tamanho da área do método (KB)
CCSC Tamanho do espaço de classe compactado (KB)
CCSU Tamanho de uso do espaço de classe compactado (KB)
YGC Coleta de lixo da nova geração
YGCT A coleta de lixo da geração jovem leva tempo
FGC Número de coletas de lixo para idosos
FGCT A coleta de lixo da velhice leva tempo
GCT Tempo total de coleta de lixo
oracle官方文档:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html

tamanho de pilha padrão

insira a descrição da imagem aqui
Quando o tamanho da memória heap não é especificado, a memória heap padrão é 1/64 da memória física e a memória heap máxima é 1/4 ou 1 G da memória física da máquina.
Nota sobre o metaespaço: o metaespaço se expandirá automaticamente e não é limitado por padrão.
insira a descrição da imagem aqui

[root@bogon ~]# jstat -gc 6619
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
1024.0 1024.0  0.0    0.0    8192.0   672.0    20480.0      0.0     4480.0 774.5  384.0   75.9       0    0.000   0      0.000    0.000
[root@bogon ~]# jinfo -flag InitialHeapSize 6619 
-XX:InitialHeapSize=31457280

A porcentagem mostra informações de uso do GC

insira a descrição da imagem aqui
insira a descrição da imagem aqui

Como julgar possível OOM?

Podemos comparar o tempo de inicialização do processo Java e o tempo total de GC (coluna GCT), ou o tempo entre duas medições e o delta do tempo total de GC, para obter o tempo de GC como proporção do tempo de execução.
Se a proporção exceder 20%, significa que a pressão do heap atual é alta;
se a proporção exceder 90%, significa que quase não há espaço livre no heap e uma exceção OOM pode ser lançada a qualquer momento.
insira a descrição da imagem aqui

Como julgar possíveis vazamentos de memória?

Etapa 1: em um programa Java de longa execução, podemos executar o comando jstat para obter várias linhas de dados de desempenho continuamente e obter o valor mínimo da coluna OU (ou seja, a memória antiga ocupada) nessas linhas de dados.
Etapa 2: Em seguida, repetimos a operação acima em intervalos longos para obter vários conjuntos de valores mínimos de OU. Se esses valores mostrarem uma tendência ascendente, significa que o uso de memória da idade avançada do programa Java está aumentando, o que significa que o número de objetos que não podem ser recuperados está aumentando, portanto, há uma grande possibilidade de uma memória vazar.

Acho que você gosta

Origin blog.csdn.net/fengsheng5210/article/details/123659743
Recomendado
Clasificación