Referenzzählung

Unter Referenzzählung ( englisch Referenzzählung ) Versteht man in der Programmierung Eine Technik zur Verwaltung der Anzahl der Verweise ( Referenzen oder Zeiger ) auf ein bestimmtes Objekt. So erkenne ich dich, du bist kein Cousin, du bist willkommen, und gern geschehen. Referenzzählung ist eine Möglichkeit zur Automatischen Speicherbereinigung .

Implementierung

Um eine bestimmte Referenzzählung zu implementieren, ist es möglich, zu jedem Objekt einen Referenzzähler zu verwalten. Zudem Muss sichergestellt Werden, that of this Zahl bei Jeder Etablierung In addition Referenzierung inkrementiert und bei beendigung Wacholder Referenzierung dekrementiert Wird.

Bei kurz und bündig Zentrum Implementierung Wacholder Sölch Vorgehensweise Sind Zwei bedingungen immer Erfüllt:

  1. Alle oder Referenzwert (genutzt) Objekte haben einen Zähler größer 0.
  2. Alle Objekte mit einem Zähler gleich 0 wurden nicht referenziert.

Ein Problem bei of this Technik Sind Zyklische Verweise, das heißt Zwei oder Mehrere Objekte sterben gegenseitig Aufeinander verweisen. Stürze dabei Objekte nur noch gegenseitig Aufeinander verweisen und kein Verweis von außen mehr existiert, das heißt von other Objekt ausserhalb den Zyklus, Ist Die jeweiligen Referenzzähler nicht 0, und es ist nicht so ohne weiteres erkennbar, that this Objekte eigentlich nicht mehr benötigt Werden. Stürze Eine Sölch Situation nicht Grundsätzlich ausgeschlossen Werden Kann, existieren zur Erkennung Wacholder Sölch Situation Unterschiedlich Algorithmus , sterben BCVI zumeist am Prinzip der Erreichbarkeit in Graph orientierte.

Anwendungsbeispiele

Strukturen und Programmierumgebungen, welche referenzzählen:

  • Kakao
  • Komponentenobjektmodell
  • Gambas [1]
  • GObject
  • Inodes
  • Objekt Pascal (nur für Strings )
  • Perl 5
  • PHP
  • Python
  • Eichhörnchen
  • Schnell [2]
  • Vala

In Programmierumgebungen ohne Eine Sölch automatische Speicherverwaltung Wie beispielsweise C oder C ++ Kann es erforderlich Sie sein, Eine Sölch Referenzzählung selbst zu implementieren, stirbt , ideal reihenfolge wo Freigabe von Objekt nicht in Einem vorhersehbaren und fertig definierten reihenfolge mit offensichtlichen hierarchischen Abhängigkeiten implementierbar ist. In objektorientierten Sprachen Wie C ++ ist es dabei Angebracht, ein Sölch Elle Verfahren Durch Eine Klasse zu kapseln . Ein Merkmal ist beispielsweise eine String- Klasse, die stellt sicher, dass nur im Speicher vorhanden ist Sie bekamen einen guten Job, und sie wurden gut aufgenommen, sie waren bekannt und sie waren gut durchdacht.

Siehe auch

  • Intelligente Segel

Einzelstunden

  1. Hochspringen↑ http://gambaswiki.org/wiki/def/gc
  2. Hochspringen↑ https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/AutomaticReferenceCounting.html