Контролировать использование памяти программы в Linux

Существуют ли в Linux инструменты, которые графически или текстовым образом отображают использование памяти для программы? Например, если я пишу программу на С++ и хочу проверить, что объекты распределены и освобождены должным образом в памяти, существуют ли доступные приложения, которые визуально отображали бы созданные и удаляемые объекты? Когда я использовал программу в Visual Studio, я помню, как перешел через программу и использовал панель отладки для отслеживания использования памяти и искал что-то похожее на Linux.

Ответ 1

Это не совсем то, что вы ищете, но посмотрите Valgrind.

Ответ 2

Обычно я запускаю top, чтобы следить за общим использованием памяти.

Ответ 3

while (/proc/<pid>/status)
 echo "VMSize: `ps -p <pid> -o vsize=`" >> ! mem.out
 pstack <pid> >> mem.out
 sleep 10
end

grep VMSize mem.out | awk -F':' '{print $2}' | sort -r -n | head -1 даст вам пиковую память.

Также используйте mem.out, чтобы увидеть соотношение памяти и текущей корреляции стека.

Ответ 4

Очень сложно определить, сколько памяти используется в операционной системе, поддерживающей виртуальную память.

Проблема не в том, сколько памяти она использует, но сколько из них является частным и сколько общего.

Вы можете посмотреть /proc/pid/maps или/proc/pid/smaps (возможно). Эти файлы будут только сообщать вам, сколько памяти он отобразил в своем адресном пространстве, а не о том, сколько он использует, и определенно не о том, сколько общего с другими процессами в системе.

Даже карты "private" могут быть разделены, поскольку fork() выполняет копирование при записи, поэтому частную страницу можно по-прежнему использовать совместно с другим (связанным - обычно родительским или родственным) процессом. Более того, страницы, которые были отображены, но никогда не использовались, не будут потреблять пространство вообще.

Отображается RSS (размер установленного резидента) для каждого сопоставления, но это только говорит о том, сколько резидент (в ОЗУ, в отличие от того, чтобы поменяться в файл подкачки, еще не выделен или еще не загружен из сопоставленного файла), теперь сколько общего и с чем.

Я думаю, ваш лучший выбор - подсчитать количество частной анонимной памяти, которая может быть в порядке. В некоторых случаях.

Ответ 5

1) Первый запуск

ps -u <your user id>

2) Получить et pid процесса, который вы хотите отслеживать, из вывода 1)

3) Затем запустите

top -p <the pid of the process you want to monitor>

Ответ 6

conky (screenshots) - отличный простой просмотрщик компьютерных ресурсов, который помещается поверх обоев рабочего стола. Я слежу за использованием памяти и использованием конкретной программы.