Die wohl naheliegendste Methode für automatische Speicherverwaltung ist die Referenzzählung. Wenn man erfasst, zu welchen Objekten eine Anwendung Referenzen erstellt, lässt sich ableiten, welche Objekte noch benötigt werden. Voraussetzung für die Implementierung dieses Algorithmus ist, dass jedes Objekt über ein Datenfeld verfügt, in dem laufend aktualisiert wird, zu wie vielen anderen Anwendungsobjekten Referenzen (Zeiger) vorliegen. Referenzen des Objekts auf sich selbst werden dabei ignoriert. Sollte das Ergebnis dieser Zählung Null ergeben, wird das jeweilige Objekt als nicht mehr benötigt eingestuft. Denn wenn keine Referenzen zu einem Objekt bestehen, handelt es sich bei diesem in der Tat um verwaisten Speicher. Was Speicherplatz und Performance anbelangt, ist dies das wirksamste Verfahren zur Speicherbereinigung.
Leider enthält dieser Algorithmus ein für Computerwissenschaftler unlösbares Problem: Wenn zwei Objekte oder eine lange Kette von Objekten aufeinander verweisen und alle diese Objekte vom System nicht mehr benötigt werden, besteht keine Möglichkeit die Referenzen als überflüssig zu erkennen. Da jedes der Objekte mindestens eine Referenz aufweist, können sie nie als nicht benötigt eingestuft werden.
Aufgrund dieses Problems wird in modernen virtuellen Maschinen nur selten auf die Referenzzählung zurückgegriffen. So setzt Java die Referenzzählung nur bei verteilten Objekten ein (z.B. entfernter Methodenaufruf), in Anlehnung an die Netzwerkobjekte in Modula-3. Die verteilte Speicherverwaltung stellt neue Anforderungen an die Speicherbereinigung. Dabei müssen Punkte wie langsamer Objektzugriff und das Löschen von Referenzen beim Ausfall eines Netzwerks berücksichtigt werden. Obwohl durch die Referenzzählung möglicherweise verkettete Objekte nicht als überflüssig erkannt werden, ist dieses Verfahren mit Hinblick auf seine Performance und praktische Durchführbarkeit besser als andere Algorithmen zum Auffinden nicht benötigten Speicherplatzes geeignet.
Neueste Kommentare
Noch keine Kommentare zu Systeme zur automatischen Speicherbereinigung
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.