2

Получить потребление памяти процессом. Этот вопрос касается использования памяти работающей программой. Мне нужно знать, сколько оперативной памяти программа использовала после ее завершения.

Допустим, я компилирую программу на C++ с помощью этой команды g++ main.cpp . Мне нужно знать, сколько памяти это использовало после того, как оно закончилось. Или, если память может быть измерена только в определенный момент, мне нужно знать, каково максимальное использование ОЗУ при компиляции программы.

Для любой программы, которую я передал в /usr/bin/time -f "%M" , я получаю максимальное резидентное значение 0. Я уверен, что моя программа использует гигабайты памяти

3 ответа3

3

Запустите программу в /usr/bin/time и посмотрите максимальное резидентное значение. Вам нужно указать полный путь, чтобы избежать использования более простой встроенной команды времени.

1

Я всегда проверяю свой код с помощью valgrind.

запустите ваш код как

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

Он обеспечивает хороший вывод о потреблении памяти (выделение / освобождение), но будьте готовы к очень медленному запуску.

Использование флага -g при компиляции поможет valgrind предоставить информацию о том, какие строки могут вытекать из памяти. (дополнительное удовольствие)

Не стесняйтесь проверять дополнительные параметры valgrind для дополнительного вывода. Для меня этих двух достаточно.

0

Если не считать модификации ядра или запуска исследуемой программы в какой-то оболочке, которая записывает использование памяти, лучшим вариантом будет воспользоваться советом, данным в ответах на связанный вопрос.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .