Skip to main content

Was ist eine schwache Referenz?

Eine schwache Referenz ist eine Referenz auf ein Objekt im Speicher, das aufgrund seines Zusammenhangs mit dem Objekt nicht durch Müllsammlungsroutinen gereinigt wird.Diese Art von Referenz wird üblicherweise verwendet, um Speicherlecks zu beseitigen, wenn spezielle Bedingungen vorliegen, die eine normale Müllsammlung verhindern.Programmieralgorithmen, die eine kreisförmige Referenz verwenden oder fremde Informationen in einem Cache oder einer speziellen Struktur mit schwachen Referenzen verwenden.Die Verwendung schwacher Referenzen in diesen Arten von Situationen ermöglicht die Bereinigung ungenutzter Referenzobjekte und deren zugehörigen schwachen Referenzen.Das Objekt bleibt, solange die starke Referenz lebensfähig bleibt.Eine starke Referenz wird annulliert und der Gedächtnis des zugehörigen Objekts wird kurz nach einer starken Referenz befreit und sein Objekt wird von einem Programm nicht mehr verwendet.In bestimmten Situationen wie Socket-Programmier- oder Bildmanipulationsanwendungen verfügen die Klassen, die zum Erstellen von Arbeitsobjekten verwendet werden, nicht integriert, um zusätzliche Informationen zu speichern, die von einer bestimmten Anwendung erforderlich sind.Die zusätzlichen Details für transiente Objekte wie Verbindungen oder Bilder müssen in ergänzenden Cache -Objekten gespeichert und mit den transienten Objekten durch Referenzen verknüpft werden.Wenn eine schwache Referenz anstelle einer starken Referenz verwendet wird, werden die zusätzlichen Informationen nicht durch die Referenz gebunden und können vom Müllsammler aus dem Cache entfernt werden, sobald das Referenzobjekt als nicht resultierbar markiert wurde.

Schwache Referenzklassen sind normalerweiseErhältlich in Sprachen, die durch Subsysteme der Garbage Collection erhöht werden, einschließlich Java, Python, Perl, C#und dem .NET -Framework.In C ++ sind Programmierer jedoch in der Regel dafür verantwortlich, dass die Speicherreinigung sichergestellt wird.Diese Sprache hat eine intelligente Zeigerklasse implementiert, die einige der gleichen Funktionen bietet, die schwache Referenzen und Müllsammlung liefern, was dazu beiträgt, Speicherlecks zu verringern, die durch unsachgemäße Zeigerreinigung verursacht werden.

Um die Speicherverwaltung weiter zu erleichternVerbessern Sie die Funktionalität einer Sprache, indem Sie feinere Gradienten von anderen Referenzen als die starke oder schwache Referenz bereitstellen.Datentypen wie weiche Referenzen und Phantomreferenzen können in diese Sprachen aufgenommen werden, wodurch unterschiedliche Niveaus der Rückerstattung oder Deallocations -Benachrichtigung zu ermöglichen.Programmierer, die Sprachen mit automatisierter Müllsammlung verwenden, sollten sich mit allen verfügbaren Referenzklassen vertraut machen, um die Anwendungsleistung zu verbessern.