Pular para o conteúdo

heaptrack - Heap Memory Profiler para Linux

heaptrack - Heap Memory Profiler para Linux

heaptrack (por KDE) é um heap memory profiler para Linux. Ele rastreia todas as alocações de memória e anota cada uma com um stack trace, então você pode encontrar vazamentos, hotspots de alocação, alocações temporárias excessivas e uso máximo de memória. Ele registra um arquivo de dados enquanto seu programa funciona, depois o analisa com heaptrack_gui (gráficos de chama ricos e gráficos) ou heaptrack_print (linha de comando). A sobrecarga é baixa o suficiente para workloads realistas.

Instalação

PlataformaComando
Debian/Ubuntusudo apt install heaptrack heaptrack-gui
Fedorasudo dnf install heaptrack heaptrack-gui
Arch Linuxsudo pacman -S heaptrack heaptrack-qt
A partir do código-fonteconstrua a partir do repo KDE/heaptrack (CMake)
Verificarheaptrack --version

Gravação

ComandoDescrição
heaptrack ./my-program argsPerfil de um comando desde o início
heaptrack -p PIDAnexe a um processo em execução (baseado em GDB)
heaptrack -o out.zst ./progEscreva para um arquivo de saída específico
SaídaCria heaptrack.PROG.PID.zst no diretório atual

Ao sair, heaptrack imprime um resumo e o caminho para o arquivo de dados registrado.

Analisando (GUI)

heaptrack_gui heaptrack.my-program.12345.zst
Vista GUIMostra
ResumoRSS máxima, alocações totais, bytes vazados
Gráfico de chamaAlocações atribuídas a stack calls
Top-down / bottom-upÁrvores de chamada por alocação
Caller/calleeNavegue relacionamentos de alocação
GráficosAlocações/vazamentos/temporário com o tempo

Analisando (CLI)

# Imprima os hotspots de alocação superior no terminal
heaptrack_print heaptrack.my-program.12345.zst | less
MétricaSignificado
peakMáxima memória de heap realizada de uma vez
leakedMemória alocada mas nunca liberada
allocationsNúmero total de alocações (churn)
temporaryAlocações liberadas quase imediatamente (desperdício)
OpçãoDescrição
-a, --print-peakOrdene por consumidores de pico de memória
-l, --print-leaksMostre vazamentos
-t, --print-temporaryMostre hotspots de alocação temporária
-d, --diff FILEDiff duas gravações

Comparando Execuções (Diff)

# Veja o que mudou entre duas compilações/execuções
heaptrack_print -d before.zst after.zst

O Que Cada Métrica Lhe Diz

SintomaProcure em
RSS do processo continua crescendoleaked — alocações nunca liberadas
Alto custo do alocador de CPUallocations / temporary — muito churn
OOM sob cargapeak — reduza max memória simultânea
Pico de memória de inicializaçãográfico de chama no intervalo de tempo relevante

Workflows Comuns

# Encontre um vazamento em um serviço
heaptrack ./myservice --run-workload
heaptrack_print -l heaptrack.myservice.*.zst | head -30

# Atribua pico de memória durante uma operação pesada (GUI é mais fácil)
heaptrack ./batch-job
heaptrack_gui heaptrack.batch-job.*.zst   # inspecione o gráfico de chama "peak"

# Reduza churn de alocação temporária em um loop quente
heaptrack_print -t heaptrack.*.zst | head

heaptrack vs Outras Ferramentas de Memória

AspectoheaptrackValgrind (massif/memcheck)Alocadores integrados
SobrecargaBaixaAlta (memcheck muito alta)Varia
Detecção de vazamentoSimSim (memcheck)Parcial
Churn de alocaçãoSim (temporário)massif foca no picoNão
UIGUI rica + CLITexto / massif-visualizerNenhuma
Melhor paraProfiling rápido de heap em execuções realistasVerificações profundas de corretudeVerificações rápidas

Recursos