heaptrack - Profiler di Memoria Heap per Linux
heaptrack (di KDE) è un profiler di memoria heap per Linux. Traccia tutte le allocazioni di memoria e annota ciascuna con una traccia di stack, quindi puoi trovare perdite, hotspot di allocazione, allocazioni temporanee eccessive e utilizzo massimo di memoria. Registra un file di dati mentre il tuo programma è in esecuzione, quindi lo analizza con heaptrack_gui (grafici flame ricchi e grafici) o heaptrack_print (linea di comando). L”overhead è sufficientemente basso per carichi di lavoro realistici.
Installazione
| Piattaforma | Comando |
|---|
| Debian/Ubuntu | sudo apt install heaptrack heaptrack-gui |
| Fedora | sudo dnf install heaptrack heaptrack-gui |
| Arch Linux | sudo pacman -S heaptrack heaptrack-qt |
| Da sorgenti | compila dal repo KDE/heaptrack (CMake) |
| Verifica | heaptrack --version |
Registrazione
| Comando | Descrizione |
|---|
heaptrack ./my-program args | Profila un comando dall”inizio |
heaptrack -p PID | Allega a un processo in esecuzione (basato su GDB) |
heaptrack -o out.zst ./prog | Scrivi in un file di output specifico |
| Output | Crea heaptrack.PROG.PID.zst nella directory corrente |
All”uscita, heaptrack stampa un riepilogo e il percorso del file di dati registrato.
Analisi (GUI)
heaptrack_gui heaptrack.my-program.12345.zst
| Vista GUI | Mostra |
|---|
| Riepilogo | RSS di picco, allocazioni totali, byte persi |
| Grafico flame | Allocazioni attribuite a stack di chiamate |
| Top-down / bottom-up | Call tree per allocazione |
| Caller/callee | Naviga relazioni di allocazione |
| Grafici | Allocazioni/perdite/temporanee nel tempo |
Analisi (CLI)
# Stampa i principali hotspot di allocazione nel terminale
heaptrack_print heaptrack.my-program.12345.zst | less
| Metrica | Significato |
|---|
| peak | Memoria heap massima mantenuta contemporaneamente |
| leaked | Memoria allocata ma mai liberata |
| allocations | Numero totale di allocazioni (churn) |
| temporary | Allocazioni liberate quasi immediatamente (spreco) |
| Opzione | Descrizione |
|---|
-a, --print-peak | Ordina per consumatori di memoria di picco |
-l, --print-leaks | Mostra perdite |
-t, --print-temporary | Mostra hotspot di allocazioni temporanee |
-d, --diff FILE | Diff due registrazioni |
Confronto Tra Esecuzioni (Diff)
# Vedi cosa è cambiato tra due build/esecuzioni
heaptrack_print -d before.zst after.zst
Cosa Ogni Metrica Ti Dice
| Sintomo | Guarda |
|---|
| RSS di processo continua a crescere | leaked — allocazioni mai liberate |
| Costo della CPU dell”allocatore alto | allocations / temporary — troppo churn |
| OOM sotto carico | peak — riduci la memoria simultanea massima |
| Picco di memoria all”avvio | grafico flame al range di tempo pertinente |
Flussi di Lavoro Comuni
# Trova una perdita in un servizio
heaptrack ./myservice --run-workload
heaptrack_print -l heaptrack.myservice.*.zst | head -30
# Attribuisci memoria di picco durante un''operazione pesante (GUI è più facile)
heaptrack ./batch-job
heaptrack_gui heaptrack.batch-job.*.zst # ispeziona il grafico flame "peak"
# Riduci churn di allocazioni temporanee in un ciclo hot
heaptrack_print -t heaptrack.*.zst | head
heaptrack vs Altri Strumenti di Memoria
| Aspetto | heaptrack | Valgrind (massif/memcheck) | Allocatori integrati |
|---|
| Overhead | Basso | Alto (memcheck molto alto) | Varia |
| Rilevamento perdite | Sì | Sì (memcheck) | Parziale |
| Churn di allocazione | Sì (temporanea) | massif si concentra su picco | No |
| UI | GUI ricca + CLI | Testo / massif-visualizer | Nessuno |
| Migliore per | Profilazione heap veloce su esecuzioni realistiche | Controlli di correttezza profonda | Controlli rapidi |
Risorse