Reference Counter

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 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:

  • Counter-Strike — Éditeur Sierra Studios Développeur Valve Corporation Concepteur …   Wikipédia en Français

  • Counter-strike — Éditeur Sierra Studios Développeur Valve Software Concepteur …   Wikipédia en Français

  • Counter Strike — Éditeur Sierra Studios Développeur Valve Software Concepteur …   Wikipédia en Français

  • Counter Strike: Source — Counter Strike Counter Strike Éditeur Sierra Studios Développeur Valve Software Concepteur …   Wikipédia en Français

  • Counter Drain railway station — Counter Drain Site of former station Location Place …   Wikipedia

  • counter word — n. any word freely used as a general term of approval or disapproval without reference to its more exact meaning, as nice, terrible, lousy, terrific * * * …   Universalium

  • counter word — n. any word freely used as a general term of approval or disapproval without reference to its more exact meaning, as nice, terrible, lousy, terrific …   English World dictionary

  • Counter machine reference model — The Counter machine s reference model is a set of choices and conventions to be used with the Counter machine and other model variants of the Register machine concept. It permits comparisons between models, and serves a didactic function with… …   Wikipedia

  • Counter machine — A counter machine is an abstract machine used in formal logic and theoretical computer science to model computation. It is the most primitive of the four types of register machines. A counter machine comprises a set of one or more unbounded… …   Wikipedia

  • Reference counting — In computer science, reference counting is a technique of storing the number of references, pointers, or handles to a resource such as an object or block of memory. It is typically used as a means of deallocating objects which are no longer… …   Wikipedia

Share the article and excerpts

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