Как узнать использование памяти потока? - PullRequest
3 голосов
/ 22 апреля 2009

возможно ли узнать, сколько памяти используется данным потоком phtread ? Меня интересует информация, подобная VmRSS.

Ответы [ 3 ]

5 голосов
/ 22 апреля 2009

Каждый поток использует стек фиксированного размера, созданный при запуске потока. Обычно это 512 К / 1М, но это только виртуальный размер при запуске.

Однако для динамически распределяемых данных (malloc) это информация всего процесса, а не для каждого потока. Обратите внимание, что некоторые альтернативные реализации malloc (например, tcmalloc) могут предоставить более продвинутую статистику.

0 голосов
/ 22 апреля 2009

Из моего собственного опыта использования библиотеки pthread, если поток создается с атрибутами по умолчанию, то его размер стека составляет 10 МБ. Это может зависеть от платформы.

Если вы заинтересованы в уменьшении размера стека, вы можете использовать pthread_attr_setstacksize (). Чтобы оценить правильное значение размера стека, вы можете использовать скрипт с именем "checkstack.pl". Он поставляется в исходных кодах ядра Linux (в каталоге «scripts»).

См. Также http://www.kegel.com/stackcheck

0 голосов
/ 22 апреля 2009

Кроме того, сама ОС может освобождать память в отдельном потоке, чтобы ускорить вызовы функции free (), делая сбор правильной статистики еще более сложным

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