Použijte masiv, který je součástí nástrojů Valgrind. massif-visualizer vám může pomoci graficky zobrazit data, nebo můžete jednoduše použít ms_print
příkaz.
Vyzkoušejte profilovač haldy dodávaný s gperftools od společnosti Google. Vždy jsem ho sestavoval ze zdrojů, ale je k dispozici jako předkompilovaný balíček pod několika linuxovými distribucemi.
Použití je stejně jednoduché jako propojení dynamické knihovny s vašimi spustitelnými soubory a spuštění programu. Shromažďuje informace o každé dynamické alokaci paměti (pokud jsem viděl) a ukládá na disk výpis paměti pokaždé, když dojde k jedné z následujících situací:
HEAP_PROFILE_ALLOCATION_INTERVAL
bajtů byly přiděleny programem (výchozí:1Gb)- značka využití velké paměti se zvýší o
HEAP_PROFILE_INUSE_INTERVAL
bajtů (výchozí:100 Mb) HEAP_PROFILE_TIME_INTERVAL
uplynuly sekundy (výchozí:neaktivní)- Výslovně voláte
HeapProfilerDump()
z vašeho kódu
Poslední z nich je podle mých zkušeností nejužitečnější, protože můžete přesně určit, kdy chcete mít snímek využití haldy a poté porovnejte dva různé snímky a uvidíte, co je špatně.
Nakonec existuje několik možných výstupních formátů, jako je textový nebo grafický (ve formě orientovaného grafu):
Pomocí tohoto nástroje jsem byl schopen zjistit nesprávné využití paměti, které jsem nemohl najít pomocí Massif.