Vad är en mjuk referens?

I Java®-kodningsspråket görs ständigt referenser till objekt, strängar och variabler, även om programmeraren inte är medveten om dessa referenser. Dessa referenser kommunicerar direkt med sopsamlaren, en funktion som samlar in onödig information och slänger den så att den inte längre tar upp minne. Som standard är alla referenser starka referenser och ställs in utan någon kodning, vilket innebär att de inte släpps till sopsamlaren. En mjuk referens gör att data kan slängas. Det är referensen på mellannivå för alla icke-starka referenser.

Närhelst en programmerare gör något med Java®, vare sig det är så enkelt som att göra en sträng eller skapa komplexa funktioner, görs en referens. Programmeraren behöver inte skriva ett referenskommando; referensen görs automatiskt och är som standard en stark referens. Detta innebär att data från referensen inte kan kastas bort, eftersom de är länkade till integralobjekt som behövs för hela skriptet.

En del data måste dock slängas eftersom de annars tar upp mycket minne. Till exempel, om en programmerare bygger ett skript där serienummer används eller andra tillfälliga delar av information samlas in eller skapas, blir det skadligt att hålla fast vid denna information. Java®-programmet skulle vägra att slänga informationen, även när den är onödig, och skriptet skulle behöva mer och mer minne för att fungera.

Genom att ange en sträng eller sektion som en mjuk referens, som måste placeras i kodningen, talar detta för sopsamlaren att data kan släppas. När den väl har släppts kommer strängen eller avsnittet att läsas som ”null”. Sophämtaren, beroende på dess inställning, bestämmer när data ska kastas ut.

Det finns tre icke-starka referenser: mjuk referens, svag referens och fantomreferens. Den svaga referensen är den svagaste, och dess data slängs snabbt. Mjuka referenser, som är bäst för skript där temporär data kan användas flera gånger, står på tur. En fantomreferens slängs nästan automatiskt, inom en sekund, och bör användas sparsamt.

Hur lång tid en mjuk referens kvarstår beror vanligtvis på mängden minne i datorn. Om minnet är fullt, kommer sopsamlaren först förstöra alla svaga referenser. När alla svaga referenser är borta och om minnet fortfarande behöver rensa data, kommer mjuka referenser att slängas ut härnäst.