Software Development for Professionals
Effizientes C/C++ HeapManagement
SmartHeap ist ein Memory-Manager für den dynamischen Speicher, der effizient
Speicher allokiert und verwaltet. Es ersetzt die Routinen für die dynamische Speicherverwaltung der Laufzeitbibliothek
des Compilers.
Gerade in C/C++ Applikationen, die auf Systemen mit virtueller Speicherverwaltung
laufen, wird die Geschwindigkeit, mit der dynamischer Speicher allokiert/deallokiert
wird, zum kritischen Faktor. Benchmarks belegen, daß SmartHeap's Algorithmen
bis zu 100-mal schneller arbeiten als die Funktionen der Laufzeitbibliotheken.
SmartHeap verhindert zuverlässig die Fragmentierung des Heaps, die vor allem
die Performance des Allokators beeinflußt.
Dazu verwendet es einen Allokator, der in Abhängigkeit von der Größe des angeforderten
Speicherblocks verschiedene Algorithmen verwendet. Dies geschieht transparent,
d.h. Sie als Programmierer müssen lediglich die SmartHeap-Library linken,
um diese Funktionalität nutzen zu können.
Aber SmartHeap bietet auch die Möglichkeit des "Fein-Tunings": Sie
können z.B. eigene Memory-Pools anlegen, die eine größere Lokalität aufweisen.
Allokation und Deallokation in solchen Memory-Pools sind wesentlich schneller
als Allokation und Deallokation im allgemeinen Heap.
SmartHeap verfügt darüberhinaus über einen sehr leistungsfähigen Debug-Modus.
Wenn die Debug-Version von SmartHeap einen Speicherblock allokiert, werden
folgende Informationen gespeichert:
Die SmartHeap-Funktion, die das Objekt erzeugt hat (z.B. malloc).
-
Dateiname, Zeilennummer und ein Zähler wo das Objekt erzeugt wurde. Diese
Information erlaubt es Breakpoints auf den n-ten Durchlauf einer Allokation zu setzen.
-
Einen eindeutigen Zähler, der es erlaubt, jede Allokation von allen anderen
Allokationen in einem Prozess zu unterscheiden.
-
Die angeforderte Größe und alle Flags.
-
Eine Checksumme, falls der Speicherblock read-only angefordert wurde.
Mit diesen Informationen können Sie Leaks und andere Speicherfehler
leicht entdecken
SmartHeap enthält optimierte Libraries für Single- und MultiThread Anwendungen.
Das folgende .zip-File ist leider nicht mehr ganz aktuell. Es ist aber, außer dem SmartHeap Programmer's Guide, das einzige Dokument, das die SmartHeap Interna beschreibt:
SmartHeap Technische Spezifikation (.zip, engl.)