Valgrind содержит несколько инструментов, два или три из которых могут быть вам полезны.
Однако первое, что вам нужно сделать, это уменьшить размер вашей модели. У Valgrind большие затраты времени и памяти. Запуск Valgrind в приложении, которое выделяет 130 ГБ памяти, вероятно, будет чрезвычайно медленным. Однако, если вы просто уменьшите размер своих данных, полученные вами сведения все равно должны быть действительными.
Первый инструмент, который следует рассмотреть, - memcheck
. Это наиболее часто используемый инструмент Valgrind. В дополнение к другим типам ошибок, он может обнаружить утечки памяти. Выполнить
valgrind --leak-check=full --show-reachable=yes {your app} {your app arguments}
Необходимо проверить вывод, чтобы определить, есть ли утечки или удерживается ли память (возможно, для последующего повторного использования).
Следующий инструмент, который следует рассмотреть, - massif
. Это профилировщик кучи памяти. Он сгенерирует график изменения использования памяти за время выполнения вашего приложения. Запустите
valgrind --tool=massif {your app} {your app arguments}
. Это сгенерирует текстовый файл, который можно увидеть либо с помощью визуализатора массива (графическое приложение kde5), либо с помощью ms_print (часть дистрибутива Valgrind), командной строки инструмент, который будет генерировать график ascii-art. Кроме того, если вы используете относительно свежую версию Valgrind, вы можете использовать опции xtree с massif
и сгенерировать текстовый файл, который вы можете загрузить в kcachegrind
(другое графическое приложение kde5). Это даст вам «древовидное» представление о том, какие вызовы выделяют сколько памяти.
Наконец, есть DHAT
(exp-dhat
, если вы используете более старую версию Valgrind). Это профилирует использование кучи памяти. Он сгенерирует текстовый файл, который вы можете загрузить из html файла, который является частью дистрибутива Valgrind. (Или просто текстовый файл с более старыми версиями). Используйте --tool=dhat
, чтобы использовать его. Этот инструмент может помочь отследить память, которая либо не используется, либо используется редко и может быть освобождена раньше при выполнении программы.
Возможно, вы захотите взглянуть и на другие инструменты. Например, в инструментах Google perf есть компонент heapprofiler
.