контролировать использование памяти программой в Linux - PullRequest
11 голосов
/ 19 февраля 2009

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

Ответы [ 6 ]

10 голосов
/ 19 февраля 2009

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

3 голосов
/ 24 марта 2010
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 для просмотра объема памяти и текущей корреляции стека.

3 голосов
/ 19 февраля 2009

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

2 голосов
/ 19 октября 2009

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

ps -u <your user id>

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

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

top -p <the pid of the process you want to monitor>
2 голосов
/ 20 февраля 2009

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

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

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

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

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

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

0 голосов
/ 19 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...