Como encontrar a memória heap de um processo em execução? [duplicado]

7

Gostaria de saber como encontrar a memória heap de um processo em execução em segundo plano. Existe algum comando que permita tal?

    
por Tippu 25.04.2013 / 08:25

1 resposta

10

Se você quiser analisar um processo específico chamado, por exemplo, wing_ide , então

ps a | fgrep wing_ide | fgrep -v fgrep

dá-lhe um número no início da linha (no meu caso 29837) usa este número da seguinte forma:

fgrep '[heap]' /proc/29837/maps

A saída se parece com:

01d56000-07026000 rw-p 00000000 00:00 0                       [heap]

Se você fizer isso regularmente, talvez queira usar o seguinte programa python:

import sys
import psutil

for pid in psutil.get_pid_list():
    p = psutil.Process(pid)
    if p.name == sys.argv[1]:
        print(pid)
        for map in p.get_memory_maps(grouped=False):
            if '[heap]' in map.path:
                print(map.addr)

Para qual programa você fornece o nome do processo que deseja pesquisar como argumento:

python findheap.py wing_ide
    
por 25.04.2013 / 16:26