Heaptrack — быстрая C++ консольная утилита для проведения профилирования памяти (memory profiler), имеющая простой и интуитивно понятный QT (KDE) графический интерфейс (GUI).
Профилирование — сбор характеристик работы процессов, приложений или систем с целью их дальнейшей оптимизации. Используя профилирование можно определить как долго выполняются те или иные части приложения, как часто они выполняются и могут быть оптимизированы.
Профилировщик (Профайлер/Profiler) — специализированный инструмент для проведения анализа производительности и сбора характеристик во время выполнения процессов или приложений. Средства анализа чрезвычайно важны для понимания происходящих процессов, выявления неиспользуемых участков кода и многого другого.
Heaptrack полезен для устранения утечек памяти и выявления причин увеличения потребления памяти. Имеющиеся инструменты позволяют отслеживать все выделения памяти и аннотируют эти события с помощью трассировки стека.
Heaptrack использует переменную окружения LD_PRELOAD для отслеживания всех вызовов основных функций выделения памяти и регистрации этих случаев. Имеются специальные инструменты анализа позволяющие интерпретировать профиль динамической памяти. Измерение поведения приложений производится без правки её исходного кода и без перекомпиляции.
Heaptrack позволяет найти точки доступа требующие оптимизации для уменьшения объёма используемой памяти, можно найти утечки памяти выделяющие но никогда не освобождающие память. Можно найти точки производящие многочисленные выделения памяти, точки временного распределения за которыми следует освобождение памяти и многое другое...
Heaptrack может генерировать хронограмму размеров распределения по количеству вызовов. Потребление памяти, количество обращений к функциям распределения, общий объём выделенной памяти (игнорируя освобождаемую), утечки памяти и прочее сохраняется в отчётах (простых текстовых файлах в gzip архиве). Отчёты можно просматривать в виде ASCII-графиков, или с помощью удобного инструмента визуализации (исполняются возможности библиотеки kdiagram).
Heaptrack от других приложений аналогичного назначения (профилировщиков) отличается возможностью подключаться к уже запущенным процессам, потребляет значительно меньше памяти (чем например Valgrind) и практически не увеличивает время выполнения исследуемого приложения, тем самым снижая количество ошибок при анализе.
Лицензия: GNU Lesser General Public License v2.1 (LGPLv2.1)