Linux ver distribuição de memória de processo

1. comando pmap

pmapComando para visualizar informações sobre a imagem da memória do processo, a saída do conteúdo /proc/<pid>/mapse /proc/<pid>/smapsesses dois arquivos, mapso arquivo contém uma descrição sobre cada pedaço de memória, smapscontém detalhes específicos de cada seção

1.1 Como usar

Ele man pmappode ser usado no sistema Linux para visualizar seu arquivo de ajuda. O formato deste comando é pmap [options] pido 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 gdbferramenta 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 pmapcomando de endereço inicial de memória para visualizar, Addresso campo é o endereço de memória, mas tenha cuidadoPrecisa mudar o alto 0 do endereço para o 0xinícioTal despejo acima 0000000000400000 开始,0000000000600000 结束的内存, precisa ser convertido 0x400000 0x600000ou 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.dumppara 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 perfa ferramenta para continuar a investigação. Usar perf 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ção perf report -i perf.dataVer Relatório

Acho que você gosta

Origin blog.csdn.net/weixin_45505313/article/details/105287599
Recomendado
Clasificación