Referenzzähler

Referenzzähler

Unter Referenzzählung (engl. reference counting) versteht man in der Programmierung eine Technik zur Verwaltung der Anzahl der Verweise (Referenzen oder Zeiger) auf ein bestimmtes Objekt. Das primäre Ziel ist dabei, zu erkennen, wann ein Objekt nicht mehr benötigt wird und gelöscht werden kann.

Inhaltsverzeichnis

Implementierung

Um eine solche Referenzzählung zu implementieren, ist es nötig, zu jedem Objekt einen Referenzzähler zu verwalten. Zudem muss sichergestellt werden, dass dieser Zähler bei Etablierung jeder zusätzlichen Referenzierung inkrementiert und bei Beendigung einer Referenzierung dekrementiert wird.

Bei konsistenter Implementierung einer solchen Vorgehensweise sind zwei Bedingungen immer erfüllt:

  1. Alle noch referenzierten (benutzten) Objekte haben einen Zähler ungleich 0.
  2. Alle Objekte mit einem Zähler gleich 0 werden nicht mehr referenziert.

Ein Problem bei dieser Technik sind zyklische Verweise, das heißt zwei oder mehrere Objekte die gegenseitig aufeinander verweisen. Falls dabei Objekte nur noch gegenseitig aufeinander verweisen und kein Verweis von außen mehr existiert, das heißt von anderen Objekten außerhalb des Zyklus, sind die jeweiligen Referenzzähler nicht 0 und es ist nicht so ohne weiteres erkennbar, dass diese Objekte eigentlich nicht mehr benötigt werden. Falls eine solche Situation nicht grundsätzlich ausgeschlossen werden kann, existieren zur Erkennung einer solchen Situation unterschiedliche Algorithmen, die sich zumeist am Prinzip der Erreichbarkeit in Graphen orientieren.

Anwendungsfälle

In Programmiersprachen mit automatischer Speicherverwaltung wie beispielsweise Java oder C# wird die Freigabe nicht mehr benötigter Objekte durch die Laufzeitumgebung gewährleistet, die hierzu gegebenenfalls eine Referenzzählung verwendet.

In Programmiersprachen ohne eine solche automatische Speicherverwaltung wie beispielsweise C oder C++ kann es erforderlich sein, eine solche Referenzzählung selbst zu implementieren, wenn die Reihenfolge der Freigabe von Objekten nicht in einer vorhersehbaren und klar definierten Reihenfolge mit offensichtlichen hierarchischen Abhängigkeiten implementierbar ist. In objektorientierten Sprachen wie C++ ist es dabei angebracht, ein solches Verfahren durch eine Klasse zu kapseln. Ein typisches Beispiel ist dabei eine String-Klasse, die sicherstellt, dass gleichartige Inhalte nur einmal im Speicher angelegt werden und dennoch gewährleistet, dass unbenötigte Inhalte gelöscht werden, ohne dass sich der Programmierer explizit Gedanken darum machen muss.

Siehe auch

Literatur

  • Scott Meyers; More Effective C++; Addison-Wesley 1996

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем написать реферат

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Limbo (Programmiersprache) — Limbo ist eine höhere Programmiersprache, die im Betriebssystem Inferno zur Programmierung von Anwendungsprogrammen verwendet wird. Beim Design der Sprache waren bekannte Entwickler der erfolgreichen Programmiersprache C wie Dennis Ritchie und… …   Deutsch Wikipedia

  • Zeichenkette — Eine Zeichenkette oder (aus dem Englischen) ein String ist in der Informatik eine Folge von Zeichen (z. B. Buchstaben, Ziffern, Sonderzeichen und Steuerzeichen) aus einem definierten Zeichensatz. Zeichen können sich in einer Zeichenkette… …   Deutsch Wikipedia

  • Least frequently used — (LFU) („am Wenigsten verwendet“) ist ein Algorithmus, der das Vorgehen beim Auswechseln einer Page in der Pagetable beschreibt. Dabei versteht man unter einer Page (deutsch: „Seite“) einen Speicherblock des Computerspeichers mit fester Größe. Die …   Deutsch Wikipedia

  • Reference-Counting — Unter Referenzzählung (engl. reference counting) versteht man in der Programmierung eine Technik zur Verwaltung der Anzahl der Verweise (Referenzen oder Zeiger) auf ein bestimmtes Objekt. Das primäre Ziel ist dabei, zu erkennen, wann ein Objekt… …   Deutsch Wikipedia

  • Reference Counter — Unter Referenzzählung (engl. reference counting) versteht man in der Programmierung eine Technik zur Verwaltung der Anzahl der Verweise (Referenzen oder Zeiger) auf ein bestimmtes Objekt. Das primäre Ziel ist dabei, zu erkennen, wann ein Objekt… …   Deutsch Wikipedia

  • Reference counting — Unter Referenzzählung (engl. reference counting) versteht man in der Programmierung eine Technik zur Verwaltung der Anzahl der Verweise (Referenzen oder Zeiger) auf ein bestimmtes Objekt. Das primäre Ziel ist dabei, zu erkennen, wann ein Objekt… …   Deutsch Wikipedia

  • Referenzzählung — Unter Referenzzählung (engl. reference counting) versteht man in der Programmierung eine Technik zur Verwaltung der Anzahl der Verweise (Referenzen oder Zeiger) auf ein bestimmtes Objekt. Das primäre Ziel ist dabei, zu erkennen, wann ein Objekt… …   Deutsch Wikipedia

  • Automatische Speicherbereinigung — Garbage Collection (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem… …   Deutsch Wikipedia

  • Finalisierung — Garbage Collection (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem… …   Deutsch Wikipedia

  • Garbage-Collection — (GC, auch Automatische Speicherbereinigung oder Freispeichersammlung) ist ein Fachbegriff aus der Softwaretechnik. Er steht für ein Verfahren zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr benötigtem Speicher und anderen… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”