Zum Inhalt springen

heaptrack - Heap Memory Profiler for Linux Cheatsheet

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

PlattformBefehl
Debian/Ubuntusudo apt install heaptrack heaptrack-gui
Fedorasudo dnf install heaptrack heaptrack-gui
Arch Linuxsudo pacman -S heaptrack heaptrack-qt
Aus QuellcodeBaue aus dem KDE/heaptrack Repo (CMake)
Überprüfenheaptrack --version

Aufzeichnung

BefehlBeschreibung
heaptrack ./my-program argsProfile ein Befehl von Start
heaptrack -p PIDAttach zu ein laufenden Prozess (GDB-basiert)
heaptrack -o out.zst ./progSchreib zu ein Spezifisches Output Datei
OutputErstellt 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 AnsichtZeigt
ZusammenfassungSpitzen RSS, Total Allokatíons, Lecks Bytes
Flame GraphAllokatíons Zugeordnet zu Call Stacks
Top-Down / Bottom-UpCall Trees nach Allokatíon
Caller/CalleeNavigiere Allokatíons Beziehungen
ChartsAllokatíons/Lecks/Temporär über Zeit

Analysieren (CLI)

# Drucke die Top Allokatíons Hotspots zum Terminal
heaptrack_print heaptrack.my-program.12345.zst | less
MetrikBedeutung
PeakMaximum Heap Speicher Gehalten auf Einmal
LecksSpeicher Allokaziert aber Nie Freigegeben
AllokatíonsTotal Numeral Allokatíons (Churn)
TemporärAllokatíons Freigegeben Fast Sofort (Waste)
OptionBeschreibung
-a, --print-peakSortiere nach Spitzen Speicher Konsumenten
-l, --print-leaksZeige Lecks
-t, --print-temporaryZeige Temporär-Allokatíons Hotspots
-d, --diff FILEUnterschied 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

SymptomSchaue auf
Process RSS Halten GrowingLecks — Allokatíons Nie Freigegeben
Hochs Allocator CPU CostAllokatíons / Temporär — Zu viel Churn
OOM Unter LastPeak — Reduziere Max Gleichzeitig Speicher
Startup Speicher SpikeFlame 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

heaptrack vs Andere Speicher Tools

AspektheaptrackValgrind (massif/memcheck)Built-In Allocators
OverheadNiedrigHoch (Memcheck Sehr Hoch)Variiert
Leck DetectionJaJa (Memcheck)Teilweise
Allokatíons ChurnJa (Temporär)Massif Fokussiert auf PeakNein
UIReichlich GUI + CLIText / Massif-VisualizerKeine
Beste fürSchnell Heap Profiling auf Realistischen RunsTiefe Korrektheit ChecksSchnell Checks

Ressourcen