Skip to main content

Wat is een zwakke referentie?

Een zwakke referentie is een verwijzing naar een object in het geheugen dat niet voorkomt dat een object wordt opgeruimd door routines van afvalverzameling 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 mogelijk om ongebruikte referentobjecten en hun bijbehorende zwakke referenties op te ruimen.

In computerprogrammering wordt een sterke referentie meestal standaard gemaakt wanneer een object wordt gemaakt en het geheugen bezet doorHet object blijft toegewezen zolang de sterke referentie levensvatbaar blijft.Een sterke referentie wordt tenietgedaan en het geheugen van het bijbehorende objecten 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 vuilniscollector uit de cache worden verwijderd zodra het referentobject is gemarkeerd als niet-levensvatbaar.

Zwakke referentieklassen zijn normaalBeschikbaar 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 verantwoordelijk voor het opruimen van geheugen.Deze taal heeft een slimme pointerklasse geïmplementeerd die enkele van dezelfde functionaliteiten biedt die zwakke referenties en afvalinzameling bieden, waardoor geheugenlekken worden veroorzaakt door onjuist opruimen.Verbeter de functionaliteit van een taal 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 beschikbare referentieklassen om de applicatieprestaties te verbeteren.