Wat is een zwakke referentie?

Een zwakke referentie is een verwijzing naar een object in geheugen dat niet voorkomt dat een object wordt opgeruimd door routines voor het verzamelen van afval vanwege de associatie met het object. Dit type referentie wordt vaak gebruikt om geheugenlekken te elimineren wanneer er speciale omstandigheden bestaan ​​die voorkomen dat er een normale afvalinzameling wordt voorkomt. Programmeeralgoritmen die een cirkelvormige referentie gebruiken of externe informatie vasthouden in een cache of speciale structuuruitkering door zwakke referenties te gebruiken. Het gebruik van zwakke referenties in dit soort situaties maakt het opruimen van ongebruikte referentobjecten en hun bijbehorende zwakke referenties.

In computerprogrammering wordt een sterke referentie meestal standaard gemaakt wanneer een object wordt gemaakt, en het geheugen bezet door het object blijft toegewezen zolang de sterke referentie levensvatbaar blijft. Een sterke referentie wordt tenietgedaan en de bijbehorendeHet geheugen van het object wordt vrijgelaten kort na een sterke referentie en het object wordt gemarkeerd als niet langer gebruikt door een programma. In bepaalde situaties, zoals socketprogrammering of beeldmanipulatietoepassingen, hebben de klassen die worden gebruikt om werkende objecten te maken niet de ingebouwde capaciteit om aanvullende informatie op te slaan die nodig is door een specifieke applicatie. De aanvullende details voor tijdelijke objecten zoals verbindingen of afbeeldingen moeten worden opgeslagen in aanvullende cache -objecten en door referenties worden gekoppeld aan de tijdelijke objecten. Wanneer een zwakke referentie wordt gebruikt in plaats van een sterke referentie, is de extra informatie niet gebonden door de referentie en kan door de afvalcollector uit de cache worden verwijderd zodra het referentobject als niet-levensvatbaar is gemarkeerd.

Zwakke referentieklassen zijn normaal beschikbaar in talen die worden aangevuld met subsystemen van Garbage Collection, waaronder Java, Python, Perl, C#en het .NET -framework. In C ++ zijn programmeurs echter meestal responsibel voor het opruimen van geheugen. Deze taal heeft een slimme pointerklasse geïmplementeerd die enkele van dezelfde functionaliteiten biedt die zwakke referenties en afvalcollectie bieden, waardoor geheugenlekken worden veroorzaakt door onjuiste aanwijzer opruimen.

Om geheugenbeheer verder te vergemakkelijken, kunnen talen met afvalinzamelingsfaciliteiten bovendien de functionaliteit van een taal verbeteren door andere referentiegradiënten te bieden dan de sterke of zwakke referentie. Gegevenstypen zoals zachte referenties en fantoomreferenties kunnen in deze talen worden opgenomen, waardoor verschillende niveaus van objectherstel of melding van de deallocatie mogelijk zijn. Programmeurs die talen gebruiken met geautomatiseerde afvalinzameling, moeten zich vertrouwd maken met alle referentieklassen die beschikbaar zijn om de applicatieprestaties te verbeteren.

ANDERE TALEN