Artigo Diretório
1. comando pmap
pmap
Comando para visualizar informações sobre a imagem da memória do processo, a saída do conteúdo /proc/<pid>/maps
e /proc/<pid>/smaps
esses dois arquivos, maps
o arquivo contém uma descrição sobre cada pedaço de memória, smaps
contém detalhes específicos de cada seção
1.1 Como usar
Ele man pmap
pode ser usado no sistema Linux para visualizar seu arquivo de ajuda. O formato deste comando é pmap [options] pid
o seguinte:
Opções | Recursos |
---|---|
-x, --extended | Exibir formato estendido |
-d, --device | Formato do dispositivo de exibição |
-q, --quiet | Não exibe cabeçalho e linhas finais |
-A, --range baixo, alto | Exibe os resultados de um determinado intervalo de endereços, os parâmetros são separados por vírgulas |
-X | Mostra informações mais detalhadas do que a opção -x, as informações vêm do arquivo /proc/PID/smaps |
-XX | Mostra todas as informações que o kernel pode fornecer |
-c, --read-rc | Leia a configuração padrão |
-V, --version | Exibir informações de versão |
1.2 Exemplo
pmap -x 7642
Comando para imprimir as informações de memória do processo 7642, onde Os significados dos campos de formato estendido e formato de dispositivo são os seguintes
Campo | significado |
---|---|
Endereço | Endereço inicial da imagem |
Kbytes | Tamanho da imagem |
RSS | Tamanho do conjunto residente |
Sujo | Tamanho de página sujo |
Modo | Permissões de imagem |
Mapeamento | Arquivo de suporte de imagem, [anon] é a memória alocada [pilha] é a pilha do programa |
Deslocamento | Deslocamento de arquivo |
Dispositivo | Nome do equipamento |
// 进程启动命令
7642: java -Xmx256m -server -XX:+PrintGCApplicationStoppedTime -jar bin/center.jar
Address Kbytes RSS Dirty Mode Mapping
0000000000400000 4 0 0 r-x-- java
0000000000600000 4 4 4 rw--- java
00000000018dc000 1208 1092 1092 rw--- [ anon ]
00000000f0000000 257536 134672 134672 rw--- [ anon ]
00000000ffb80000 4608 0 0 ----- [ anon ]
0000000100000000 12080 12052 12052 rw--- [ anon ]
0000000100bcc000 1036496 0 0 ----- [ anon ]
00007f53dda8d000 256 60 60 rw--- [ anon ]
......
2. ferramenta de depuração gdb
Usando a gdb
ferramenta para o intervalo de endereço especificado do despejo de memória, esta operação afeta o serviço, a ser notado despejar o tamanho do bloco de memória, com cuidado. O significado do seguinte comando édump especifica que o endereço inicial do processo 13618 é 0x7ffc0508b000, o endereço final é 0x7ffc0508b000 mais a memória do deslocamento 132000 e salva no arquivo 199.dump
gdb --batch --pid 13618 -ex "dump memory 199.dump 0x7ffc0508b000 0x7ffc0508b000+132000"
Você pode usar o pmap
comando de endereço inicial de memória para visualizar, Address
o campo é o endereço de memória, mas tenha cuidadoPrecisa mudar o alto 0 do endereço para o 0x
inícioTal despejo acima 0000000000400000 开始,0000000000600000 结束的内存
, precisa ser convertido 0x400000 0x600000
ou usado de forma compensada0x400000 0x400000+4000
fora do arquivo de despejo é na verdade uma forma binária da visão direta é um monte de lixo, você pode usar strings -n 10 199.dump
para ver o conteúdo da memória de mais de 10 caracteres
- Na verdade, mesmo neste ponto é difícil ver informações úteis, o acompanhamento pode usar
perf
a ferramenta para continuar a investigação. Usarperf record -g -p <pid>
pilha de chamada de função de monitoramento aberta, rodando por algum tempo após o término de Ctrl + C, irá gerar um arquivo perf.data, execuçãoperf report -i perf.data
Ver Relatório