Como posso saber quanta memória um programa usou no Linux?

2

Obtenha o consumo de memória do processo esta pergunta é sobre como obter o uso de memória do programa em execução. Eu preciso saber quanta RAM um programa usou depois de ter terminado.

Digamos que eu esteja compilando um programa C ++ com este comando g++ main.cpp . Eu preciso saber quanta memória isso usou depois que terminou. Ou, se a memória só puder ser medida por um instante específico, preciso saber qual é o uso máximo de RAM ao compilar um programa.

Para qualquer programa que eu passe para /usr/bin/time -f "%M" , recebo o valor máximo de residente 0. Tenho certeza de que meu programa usa gigabytes de memória

    
por Ashot 22.05.2013 / 18:13

3 respostas

3

Execute o programa em /usr/bin/time e observe o valor máximo de residentes. Você precisa especificar o caminho completo para evitar o uso do comando de tempo embutido mais simples.

    
por 22.05.2013 / 22:00
1

Eu sempre testo meu código com valgrind .

execute seu código como

valgrind --leak-check=yes --track-origins=yes ./a.out

Ele fornece uma boa saída sobre o consumo de memória (alocação / desalocação), mas esteja preparado para uma execução muito lenta.

Usar o sinalizador -g ao compilar ajudará o valgrind a fornecer informações sobre quais linhas podem vazar memória. (um tratamento extra)

Sinta-se à vontade para verificar parâmetros valgrind adicionais para saída adicional. Para mim, esses dois são suficientes.

    
por 09.01.2014 / 23:13
0

Antes de modificar o kernel ou executar o programa sob investigação dentro de algum tipo de wrapper que registra seu uso de memória, sua melhor opção é seguir o conselho fornecido nas respostas da pergunta vinculada.

    
por 22.05.2013 / 18:48