Use macizo, que es parte de las herramientas Valgrind. massif-visualizer puede ayudarlo a graficar los datos o simplemente puede usar el ms_print
comando.
Pruebe el generador de perfiles de almacenamiento dinámico proporcionado con gperftools, por Google. Siempre lo he creado a partir de las fuentes, pero está disponible como un paquete precompilado en varias distribuciones de Linux.
Es tan simple de usar como vincular una biblioteca dinámica a sus ejecutables y ejecutar el programa. Recopila información sobre cada asignación de memoria dinámica (hasta donde he visto) y guarda en el disco un volcado de memoria cada vez que ocurra uno de los siguientes:
HEAP_PROFILE_ALLOCATION_INTERVAL
el programa ha asignado bytes (predeterminado:1 Gb)- la marca de uso de memoria de agua alta aumenta en
HEAP_PROFILE_INUSE_INTERVAL
bytes (predeterminado:100 Mb) HEAP_PROFILE_TIME_INTERVAL
han transcurrido segundos (predeterminado:inactivo)- Usted llama explícitamente a
HeapProfilerDump()
de tu código
El último, según mi experiencia, es el más útil porque puede controlar exactamente cuándo tener una instantánea del uso del almacenamiento dinámico y luego compare dos instantáneas diferentes y vea qué está mal.
Eventualmente, existen varios formatos de salida posibles, como textual o gráfico (en forma de gráfico dirigido):
Con esta herramienta, he podido detectar usos de memoria incorrectos que no pude encontrar con Massif.