Reference counting

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

  • 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

  • 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

  • Counting coup — refers to the winning of prestige in battle, rather than having to prove a win by injuring one s opponent. Its earliest known reference is from Shakespeare s Hamlet (Act 5, Scene 2) where Laertes and Hamlet conduct a mock swordfight before King… …   Wikipedia

  • Reference range — Reference ranges edit in: blood urine CSF feces In health related fields, a reference range or reference interval usually describes the variations of a measurement or value in healthy i …   Wikipedia

  • Counting sheep — Sheep on a paddock Counting Sheep redirects here. For the Collin Raye album, see Counting Sheep (album). Counting sheep is a mental exercise used in some cultures as a means of lulling oneself to sleep. In most depictions of the activity, the… …   Wikipedia

  • counting sheep — Meaning Attempting to get to sleep. Origin A reference to the distraction technique used to counter insomnia …   Meaning and origin of phrases

  • counting upon a statute — In pleading, making express reference to a statute; as by the words, against the form of the statute, or by force of the statute, in such case made and provided. Hart v Baltimore & Ohio Railroad Co. 6 W Va 336, 348 …   Ballentine's law dictionary

  • Weak reference — In computer programming, a weak reference is a reference that does not protect the referent object from collection by a garbage collector. An object referenced only by weak references is considered unreachable (or weakly reachable ) and so may be …   Wikipedia

  • Circular reference — A circular reference is a series of references where the last object references the first, resulting in a closed loop. Contents 1 In language 2 In business 3 In computer programming 4 …   Wikipedia

Share the article and excerpts

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