Ir al contenido

heaptrack - Perfilador de Memoria de Montículo para Linux

heaptrack - Perfilador de Memoria de Montículo para Linux

heaptrack (por KDE) es un perfilador de memoria de montículo para Linux. Rastrea todas las asignaciones de memoria y anota cada una con una traza de pila, así puedes encontrar fugas, puntos calientes de asignación, asignaciones temporales excesivas, y uso máximo de memoria. Registra un archivo de datos mientras tu programa se ejecuta, luego lo analiza con heaptrack_gui (gráficos de llama y gráficos ricos) o heaptrack_print (línea de comandos). La sobrecarga es lo suficientemente baja para cargas de trabajo realistas.

Instalación

PlataformaComando
Debian/Ubuntusudo apt install heaptrack heaptrack-gui
Fedorasudo dnf install heaptrack heaptrack-gui
Arch Linuxsudo pacman -S heaptrack heaptrack-qt
Desde fuentecompilar desde el repo KDE/heaptrack (CMake)
Verificarheaptrack --version

Grabación

ComandoDescripción
heaptrack ./my-program argsPerfilar un comando desde el inicio
heaptrack -p PIDAdjuntar a un proceso en ejecución (basado en GDB)
heaptrack -o out.zst ./progEscribir a un archivo de salida específico
SalidaCrea heaptrack.PROG.PID.zst en el directorio actual

Al salir, heaptrack imprime un resumen y la ruta al archivo de datos grabado.

Análisis (GUI)

heaptrack_gui heaptrack.my-program.12345.zst
Vista GUIMuestra
ResumenRSS pico, asignaciones totales, bytes fugados
Gráfico de llamaAsignaciones atribuidas a pilas de llamadas
Arriba hacia abajo / abajo hacia arribaÁrboles de llamadas por asignación
Llamante/llamadoNavegar relaciones de asignación
GráficosAsignaciones/fugas/temporal a lo largo del tiempo

Análisis (CLI)

# Imprimir los puntos calientes de asignación superior a la terminal
heaptrack_print heaptrack.my-program.12345.zst | less
MétricaSignificado
peakMemoria de montículo máxima sostenida a la vez
leakedMemoria asignada pero nunca liberada
allocationsNúmero total de asignaciones (vaciado)
temporaryAsignaciones liberadas casi inmediatamente (desperdicio)
OpciónDescripción
-a, --print-peakOrdenar por consumidores de memoria pico
-l, --print-leaksMostrar fugas
-t, --print-temporaryMostrar puntos calientes de asignación temporal
-d, --diff FILEDiferenciar dos grabaciones

Comparando Ejecuciones (Diff)

# Ver qué cambió entre dos compilaciones/ejecuciones
heaptrack_print -d before.zst after.zst

Lo Que Cada Métrica Te Dice

SíntomaMirar
RSS del proceso sigue creciendoleaked — asignaciones nunca liberadas
Alto costo CPU del asignadorallocations / temporary — demasiado vaciado
OOM bajo cargapeak — reducir memoria máxima simultánea
Pico de memoria de iniciográfico de llama en el rango de tiempo relevante

Flujos de Trabajo Comunes

# Encontrar una fuga en un servicio
heaptrack ./myservice --run-workload
heaptrack_print -l heaptrack.myservice.*.zst | head -30

# Atribuir memoria pico durante una operación pesada (GUI es más fácil)
heaptrack ./batch-job
heaptrack_gui heaptrack.batch-job.*.zst   # inspeccionar el gráfico de llama "peak"

# Reducir vaciado de asignación temporal en un bucle caliente
heaptrack_print -t heaptrack.*.zst | head

heaptrack vs Otras Herramientas de Memoria

AspectoheaptrackValgrind (massif/memcheck)Asignadores incorporados
SobrecargaBajaAlta (memcheck muy alta)Varía
Detección de fugasSí (memcheck)Parcial
Vaciado de asignaciónSí (temporal)massif se enfoca en picoNo
InterfazGUI rico + CLITexto / massif-visualizerNinguna
Mejor paraPerfilado rápido de montículo en ejecuciones realistasVerificaciones de corrección profundaVerificaciones rápidas

Recursos