Продукт анализа памяти для c - PullRequest
0 голосов
/ 16 ноября 2010

Я написал код, который должен выполнять сборку мусора для c-программ.Проблема в том, что мне нужно запустить его для большого количества объектов, скажем, 100 МБ, динамически выделяемых.

Есть ли какой-нибудь инструмент, который может помочь мне определить использование памяти моего кода c во время выполнения.Было бы очень полезно, если бы я мог узнать текущий размер кучи или количество выделенных блоков памяти и т. Д. Это для сравнения производительности моего кода.Так что он должен работать вместе с моим кодом или сам по себе запустить его.

Если вы знаете, пожалуйста, расскажите немного больше информации о его влиянии во время выполнения и т. Д. Большое спасибо ...:)

Ответы [ 3 ]

3 голосов
/ 16 ноября 2010

Как правило, вы можете легко достичь этого, используя собственный распределитель объектов. Когда вы подключаете его в свою библиотеку сборки мусора, вы можете убедиться, что все объекты GC будут использовать этот распределитель, чтобы вы ничего не пропустили. Все, что явно не выделено этим распределителем, не является сборщиком мусора.

1 голос
/ 16 ноября 2010

Если ваша библиотека C является glibc, то функция malloc_stats() (объявленная в malloc.h) выведет сводку текущего использования в стандартную ошибку.

1 голос
/ 16 ноября 2010

Посмотрите на Вальгринд . Он предоставляет различные инструменты анализа памяти, включая проверку утечек и профилирование кучи. Время выполнения зависит от используемого вами инструмента; полная проверка памяти медленная, поскольку она контролирует все обращения к памяти, но профилировщик памяти должен работать довольно быстро

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