Wat is een zachte referentie?
In de Java®-codeertaal wordt voortdurend verwezen naar objecten, strings en variabelen, zelfs als de programmeur zich niet bewust is van die verwijzingen. Deze referenties communiceren rechtstreeks met de vuilnisman, een functie die onnodige informatie verzamelt en weggooit zodat deze geen geheugen meer in beslag neemt. Standaard zijn alle referenties sterke referenties en worden ze ingesteld zonder codering, wat betekent dat ze niet worden vrijgegeven aan de vuilnisman. Met een zachte referentie kunnen de gegevens worden weggegooid. Het is de middelste referentie voor alle niet-sterke referenties.
Wanneer een programmeur iets doet met Java®, of het nu gaat om het maken van een string of het maken van complexe functies, wordt er verwezen. De programmeur hoeft geen referentieopdracht te schrijven; de verwijzing wordt automatisch gemaakt en is standaard een sterke verwijzing. Dit betekent dat de gegevens uit de referentie niet kunnen worden weggegooid, omdat ze zijn gekoppeld aan integrale objecten die nodig zijn voor het hele script.
Sommige gegevens moeten echter worden weggegooid, omdat ze anders veel geheugen in beslag nemen. Als een programmeur bijvoorbeeld een script maakt waarin serienummers worden gebruikt of andere tijdelijke gegevens worden verzameld of gemaakt, wordt vasthouden aan deze informatie nadelig. Het Java®-programma zou weigeren de informatie weg te gooien, zelfs wanneer deze niet nodig is, en het script zou meer en meer geheugen nodig hebben om te functioneren.
Door een string of sectie op te geven als een zachte referentie, die in de codering moet worden geplaatst, vertelt dit de vuilnisman dat de gegevens kunnen worden vrijgegeven. Eenmaal vrijgegeven, zal de string of sectie lezen als "null". De vuilnisman zal, afhankelijk van zijn instelling, beslissen wanneer de gegevens moeten worden weggegooid.
Er zijn drie niet-sterke referenties: zachte referentie, zwakke referentie en fantoomreferentie. De zwakke referentie is de zwakste en de gegevens worden snel weggegooid. Zachte referenties, die het beste zijn voor scripts waarbij tijdelijke gegevens meerdere keren kunnen worden gebruikt, zijn de volgende in de rij. Een fantoomreferentie wordt binnen een seconde bijna automatisch weggegooid en moet spaarzaam worden gebruikt.
Hoe lang een zachte referentie overblijft, hangt meestal af van de hoeveelheid geheugen in de computer. Als het geheugen vol is, vernietigt de vuilnisman eerst alle zwakke referenties. Wanneer alle zwakke referenties verdwenen zijn en het geheugen nog steeds gegevens moet wissen, worden zachte referenties als volgende weggegooid.