Vad är en mjuk referens?
På Java®-kodningsspråket hänvisas ständigt till objekt, strängar och variabler, även om programmeraren inte är medveten om dessa referenser. Dessa referenser kommunicerar direkt med avfallssamlaren, en funktion som samlar in onödig information och kastar bort den så att den inte längre tar upp minnet. Som standard är alla referenser starka referenser och ställs in utan någon kodning, vilket innebär att de inte släpps till sopor. En mjuk referens gör att data kan slängas. Det är medelnivåreferensen för alla icke-starka referenser.
När en programmerare gör något med Java®, vare sig det är så enkelt som att skapa en sträng eller skapa komplexa funktioner, hänvisas till. 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, eftersom de är länkade till integrerade objekt som behövs för hela skriptet.
Vissa uppgifter måste dock kastas bort, eftersom de annars tar mycket minne. Till exempel, om en programmerare bygger ett skript där serienummer används eller andra tillfälliga informationssamlingar samlas in eller skapas, blir det svårt att hålla fast vid denna information. Java®-programmet skulle vägra att slänga informationen, även om den inte behövs, och skriptet behöver 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, berättar detta för skräpkollektorn att data kan släppas. När strängen eller avsnittet släppts kommer att läsa som "null". Avfallssamlaren, beroende på dess inställning, kommer att bestämma när uppgifterna ska kastas ut.
Det finns tre icke-starka referenser: mjuk referens, svag referens och fantomreferens. Den svaga referensen är den svagaste och dess data kastas snabbt bort. Mjuka referenser, som är bäst för skript där tillfälliga data kan användas flera gånger, är nästa i raden. En fantomreferens kastas bort nästan automatiskt, inom en sekund, och bör användas sparsamt.
Hur lång tid en mjuk referens förblir beror vanligtvis på mängden minne i datorn. Om minnet är fullt förstör först skräpfångaren 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 nästa.