Como analisar o uso da memória?
estou a trabalhar numa máquina Linux, por isso as ferramentas do windows não me vão ajudar muito.
2 answers
Utilizar massif, que faz parte das ferramentas Valgrind. o massif-visualizador pode ajudá-lo a graficar os dados ou pode apenas usar o comando ms_print
.
Experimente o HEAP profiler entregue com gperftools , pelo Google. Eu sempre o construí a partir de fontes, mas ele está disponível como um pacote pré-compilado sob vários distros Linux.
É tão simples de usar como ligar uma biblioteca dinâmica aos seus executáveis e executar o programa. Ele coleta informações sobre cada alocação dinâmica de memória (tanto quanto eu vi) e grava para o disco a dump de memória cada vez que um dos seguintes acontece:
-
HEAP_PROFILE_ALLOCATION_INTERVAL
os 'bytes' foram atribuídos pelo programa (por omissão: 1Gb) - a marca de Utilização da memória de água elevada aumenta em
HEAP_PROFILE_INUSE_INTERVAL
bytes (por omissão: 100Mb) -
HEAP_PROFILE_TIME_INTERVAL
decorreram segundos (por omissão: inactivo) - você liga explicitamente
HeapProfilerDump()
do seu código
O último, na minha experiência, é o mais útil porque você pode controlar exatamente quando ter um instantâneo do uso de heap e, em seguida, comparar dois instantâneos diferentes e ver o que se passa?
Eventualmente, existem vários formatos de saída possíveis, como textual ou gráfico (na forma de um gráfico dirigido):
Usando esta ferramenta eu fui capaz de detectar usagens de memória incorretas que eu não conseguia encontrar usando Massif.