heaptrack - Heap Memory Profiler for Linux Cheatsheet
heaptrack (von KDE) ist ein Heap Memory Profiler für Linux. Es Verfolgt alle Speicher Allokatíons und Annotiert jede mit einem Stack Trace, damit Sie Lecks, Allokatíons Hotspots, Übermäßige Temporär Allokatíons und Spitzen Speicher Nutzung finden können. Es Zeichnet eine Daten Datei auf, während Dein Programm läuft, dann Analysiert es entweder mit dem heaptrack_gui (Reichliche Flame Graphs und Charts) oder heaptrack_print (Befehl-Line). Overhead ist Niedrig genug für Realistisches Workloads.
Installation
| Plattform | Befehl |
|---|
| Debian/Ubuntu | sudo apt install heaptrack heaptrack-gui |
| Fedora | sudo dnf install heaptrack heaptrack-gui |
| Arch Linux | sudo pacman -S heaptrack heaptrack-qt |
| Aus Quellcode | Baue aus dem KDE/heaptrack Repo (CMake) |
| Überprüfen | heaptrack --version |
Aufzeichnung
| Befehl | Beschreibung |
|---|
heaptrack ./my-program args | Profile ein Befehl von Start |
heaptrack -p PID | Attach zu ein laufenden Prozess (GDB-basiert) |
heaptrack -o out.zst ./prog | Schreib zu ein Spezifisches Output Datei |
| Output | Erstellt heaptrack.PROG.PID.zst im Aktellen Verzeichnis |
Beim Beenden, heaptrack druckt ein Zusammenfassung und den Pfad zur Aufzeichneten Daten Datei.
Analysieren (GUI)
heaptrack_gui heaptrack.my-program.12345.zst
| GUI Ansicht | Zeigt |
|---|
| Zusammenfassung | Spitzen RSS, Total Allokatíons, Lecks Bytes |
| Flame Graph | Allokatíons Zugeordnet zu Call Stacks |
| Top-Down / Bottom-Up | Call Trees nach Allokatíon |
| Caller/Callee | Navigiere Allokatíons Beziehungen |
| Charts | Allokatíons/Lecks/Temporär über Zeit |
Analysieren (CLI)
# Drucke die Top Allokatíons Hotspots zum Terminal
heaptrack_print heaptrack.my-program.12345.zst | less
| Metrik | Bedeutung |
|---|
| Peak | Maximum Heap Speicher Gehalten auf Einmal |
| Lecks | Speicher Allokaziert aber Nie Freigegeben |
| Allokatíons | Total Numeral Allokatíons (Churn) |
| Temporär | Allokatíons Freigegeben Fast Sofort (Waste) |
| Option | Beschreibung |
|---|
-a, --print-peak | Sortiere nach Spitzen Speicher Konsumenten |
-l, --print-leaks | Zeige Lecks |
-t, --print-temporary | Zeige Temporär-Allokatíons Hotspots |
-d, --diff FILE | Unterschied Zwei Aufzeichnungen |
Vergleiche Runs (Diff)
# Sehe Was sich Zwischen Zwei Builds/Runs Änderte
heaptrack_print -d before.zst after.zst
Was Jede Metrik Dir Sagt
| Symptom | Schaue auf |
|---|
| Process RSS Halten Growing | Lecks — Allokatíons Nie Freigegeben |
| Hochs Allocator CPU Cost | Allokatíons / Temporär — Zu viel Churn |
| OOM Unter Last | Peak — Reduziere Max Gleichzeitig Speicher |
| Startup Speicher Spike | Flame Graph auf dem Relevant Zeit Bereich |
Common Workflows
# Finde ein Leck in ein Service
heaptrack ./myservice --run-workload
heaptrack_print -l heaptrack.myservice.*.zst | head -30
# Zuschreibe Spitzen Speicher Während ein Schwer Betrieb (GUI ist Einfachst)
heaptrack ./batch-job
heaptrack_gui heaptrack.batch-job.*.zst # Inspiziere den "Peak" Flame Graph
# Reduziere Temporär-Allokatíons Churn in ein Heiß Loop
heaptrack_print -t heaptrack.*.zst | head
| Aspekt | heaptrack | Valgrind (massif/memcheck) | Built-In Allocators |
|---|
| Overhead | Niedrig | Hoch (Memcheck Sehr Hoch) | Variiert |
| Leck Detection | Ja | Ja (Memcheck) | Teilweise |
| Allokatíons Churn | Ja (Temporär) | Massif Fokussiert auf Peak | Nein |
| UI | Reichlich GUI + CLI | Text / Massif-Visualizer | Keine |
| Beste für | Schnell Heap Profiling auf Realistischen Runs | Tiefe Korrektheit Checks | Schnell Checks |
Ressourcen