This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)

 Documentation /  Mathematica /  Das Mathematica Buch /  Mathematica Nachschlageteil /  Einige Anmerkungen zur internen Implementierung /

EinführungGrundlegende Systemeigenschaften

A.9.2 Datenstrukturen und Speicherverwaltung

Intern besteht ein Mathematica-Ausdruck aus einem zusammenhängenden Array von Zeigern. Der erste verweist auf den Kopf, die restlichen auf ihre nachfolgenden Elemente.

Jeder Ausdruck enthält eine spezielle Form von Hash-Code, der sowohl zum Mustervergleich als auch zur Evaluierung verwendet wird.

Für jedes Symbol existiert ein zentraler Symboltabelleneintrag, der alle Informationen über das Symbol speichert.

Die meisten Roh-Objekte, wie zum Beispiel Zeichenketten und Zahlen, werden separat gespeichert. Kleine ganze Zahlen und bestimmte in Berechnungen erzeugte Gleitpunktzahlen werden jedoch nur einmal gespeichert.

Für jeden Teil des von Mathematica verwendeten Speichers wird gezählt, wie oft auf ihn verwiesen wird. Der Speicher wird automatisch freigemacht, wenn dieser Zähler Null erreicht.

Das zusammenhängende Speichern der Elemente eines Ausdrucks reduziert Speicherfragmentierung und Auslagerung. Es kann jedoch zum Kopieren eines kompletten Zeiger-Arrays führen, wenn ein einzelnes Element in einem langen Ausdruck verändert wird. Viele Optimierungen, die auf Referenzzählern und vorheriger Zuweisung basieren, werden eingesetzt, um ein derartiges Kopieren zu vermeiden.

Wenn es paßt, werden große Listen und verschachtelte Zahlenlisten automatisch als gepackte Arrays ganzer Zahlen in Maschinengröße oder reeller Zahlen gespeichert. Der Mathematica-Compiler wird automatisch eingesetzt, um komplizierte Funktionen zu kompilieren, die wiederholt auf derartige gepackte Arrays angewendet werden. MathLink, DumpSave, Display sowie diverse Import- und Export-Formate verwenden extern gepackte Arrays.

EinführungGrundlegende Systemeigenschaften