ObjectiveCeeds › Foundation: Vom Callstack, der RunLoop und dem AutoreleasePool

Foundation: Vom Callstack, der RunLoop und dem AutoreleasePool

Von Manfred Kreß
Der Callstack
Seite 1 von 3



Der Spinnball und hoher Speicherverbrauch trotz richtiger Speicherverwaltung haben eine gemeinsame Ursache: Den Callstack. In diesem Artikel erfahren Sie, was ein Callstack überhaupt ist und was die RunLoop und der AutoreleasePool damit zu tun haben.

Für den Mikroprozessor ist ein Programm eine lange Liste von Bytes die im Speicher liegen, Anweisungen und Daten. Ein Maschinenbefehl ist nichts anderes als eine Zahl, anhand derer der Mikroprozessor erkennt, was er als nächstes tun soll, z.B. „lade den Wert an Adresse xy in das Register 1; addiere Register 1 mit Register 2„ usw.. Jeder Speicherplatz hat eine Adresse, eine fortlaufende Nummer. Um zu wissen, an welcher Stelle im Speicher das momentan laufende Programm gerade Abgearbeitet wird, gibt es einen sog. Operation Pointer, kurz OP genannt. In diesem ist die Adresse gespeichert, an der das Programm gerade abgearbeitet wird. Das Programm selbst besteht dann wiederum aus einer Vielzahl von Unterprogrammen, Funktionen. Wird eine Funktion aufgerufen, springt der Mikroprozessor an die Stelle im Speicher, an der sich die aufgerufene Funktion befindet und fährt dort mit der Abarbeitung des Programms fort. Der OP wird einfach auf die neue Adresse gesetzt. Erhält der Mikroprozessor den Befehl return , dann springt er wieder dahin zurück, wo die Funktion aufgerufen wurde, bzw. einen Befehl dahinter. Dazu muss der Prozessor aber die Adressen speichern, an denen eine Funktion aufgerufen wird. Das tut er auf einem sog. Callstack. Bei einem Funktionsaufruf wird die Rücksprungadresse oben auf den Stapel gelegt. Bei einem Rücksprung, Return, wird der OP wieder auf die oberste Adresse dieses Stapels gesetzt, diese wird vom Stapel genommen und das Programm läuft an der veränderten Adresse des OP weiter. ObjectiveCeeds: Callstack Aber wozu dieser Exkurs? Lesen Sie auf den nächsten Seiten etwas über die RunLoop und den AutoreleasePool...

nächste Seite »
Seite: 1 von 3


Foundation: Vom Callstack, der RunLoop und dem AutoreleasePool

Der Callstack
Die RunLoop
Der AutoreleasePool