www.wikidata.de-de.nina.az
Unter Referenzzahlung englisch reference counting versteht man in der Programmierung eine Technik zur Verwaltung der Anzahl der Verweise Referenzen oder Zeiger auf ein bestimmtes Objekt Das Ziel ist dabei zu erkennen wann ein Objekt nicht mehr benotigt wird und geloscht werden kann Referenzzahlung ist eine Moglichkeit zur automatischen Speicherbereinigung Inhaltsverzeichnis 1 Implementierung 2 Anwendungsbeispiele 3 Siehe auch 4 Einzelnachweise 5 Literatur 6 WeblinksImplementierung BearbeitenUm eine solche Referenzzahlung zu implementieren ist es notig zu jedem Objekt einen Referenzzahler zu verwalten Zudem muss sichergestellt werden dass dieser Zahler bei Etablierung jeder zusatzlichen Referenzierung inkrementiert und bei Beendigung einer Referenzierung dekrementiert wird Bei konsistenter Implementierung einer solchen Vorgehensweise sind zwei Bedingungen immer erfullt Alle noch referenzierten benutzten Objekte haben einen Zahler grosser 0 Alle Objekte mit einem Zahler gleich 0 werden nicht mehr referenziert Ein Problem bei dieser Technik sind zyklische Verweise das heisst zwei oder mehrere Objekte die gegenseitig aufeinander verweisen Falls dabei Objekte nur noch gegenseitig aufeinander verweisen und kein Verweis von aussen mehr existiert das heisst von anderen Objekten ausserhalb des Zyklus sind die jeweiligen Referenzzahler nicht 0 und es ist nicht so ohne weiteres erkennbar dass diese Objekte eigentlich nicht mehr benotigt werden Falls eine solche Situation nicht grundsatzlich ausgeschlossen werden kann existieren zur Erkennung einer solchen Situation unterschiedliche Algorithmen die sich zumeist am Prinzip der Erreichbarkeit in Graphen orientieren Anwendungsbeispiele BearbeitenStrukturen und Programmierumgebungen die Referenzzahlung betreiben Cocoa Component Object Model Gambas 1 GObject Inodes Object Pascal nur fur Strings Perl 5 PHP Python R seit der Version 4 Squirrel Swift 2 ValaIn Programmierumgebungen ohne eine solche automatische Speicherverwaltung wie beispielsweise C oder C kann es erforderlich sein eine solche Referenzzahlung selbst zu implementieren wenn die Reihenfolge der Freigabe von Objekten nicht in einer vorhersehbaren und klar definierten Reihenfolge mit offensichtlichen hierarchischen Abhangigkeiten 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 gewahrleistet dass unbenotigte Inhalte geloscht werden ohne dass sich der Programmierer explizit Gedanken darum machen muss Siehe auch BearbeitenIntelligenter ZeigerEinzelnachweise Bearbeiten http gambaswiki org wiki def gc https developer apple com library prerelease ios documentation swift conceptual swift programming language AutomaticReferenceCounting htmlLiteratur BearbeitenScott Meyers More Effective C Addison Wesley 1996Weblinks BearbeitenMartin Kompf Reference Counting Abgerufen von https de wikipedia org w index php title Referenzzahlung amp oldid 221346853