2013-02-09 3 views
0

Я работаю над встроенной системой Linux. Я понимаю, какая информация malloc_stats и /proc/pid/stats обеспечивают. Я хочу знать, как информация, напечатанная malloc_stats, связана с информацией об использовании памяти, предоставляемой/proc/stats. Предыстория заключается в том, что я хочу, чтобы каждый поток в моем приложении проверял наличие утечек памяти. Malloc_stats печатает полезную информацию, но не может быть использован programatically./proc//task/ имеет полезную информацию, но я не могу сопоставить ее с используемой памятью кучи по текущей теме.Корреляция между malloc_stats и/proc/pid/stat

ответ

1

Вы упустили функцию библиотеки mallinfo()? Здесь malloc_stats() получает свою информацию.

Чтобы ответить на этот вопрос напрямую: Данные в /proc будет отражать общее использование памяти процесса, в том числе слабину пространство между распределения памяти и свободной памяти, а также памяти, который используется, не было выделено через malloc() на всех (например, стек, глобальные/статические переменные и т. д.). malloc_stats() сломает это на то, что на самом деле выделено, а что нет.

+0

спасибо. Мое основное намерение состоит в том, чтобы получить информацию о каждом потоке. Я понимаю, что лучший способ получить поток мудрый breakup - использовать /proc/pid/task/tid/stat. Однако на основе вашего ответа я понимаю информацию о размере резидентного набора (rss) не отражает фактическое количество динамической памяти, выделенной потоком и общим размером. Я правильно понял – Badri

+0

Память не отслеживается по каждой теме. Он принадлежит процессу, а не только одному потоку. – duskwuff

+0

По определению потока он не имеет собственного пространства памяти, но разделяет пространство памяти со всеми потоками одного и того же процесса. Таким образом, память, выделенная потоком, не имеет смысла. Это память, выделенная процессом * whole * (и не имеет значения, какой конкретный поток выполнял вызов библиотеки malloc, или syscall 'mmap', называемый' malloc'). –

Смежные вопросы