Hva er en myk referanse?
På Java®-kodespråket henvises det stadig til objekter, strenger og variabler, selv om programmereren ikke er klar over disse referansene. Disse referansene kommuniserer direkte med søppelsamleren, en funksjon som samler unødvendig informasjon og kaster den bort, slik at den ikke lenger tar opp minnet. Som standard er alle referanser sterke referanser og settes uten koding, noe som betyr at de ikke blir utgitt til søppelsamleren. En myk referanse gjør at dataene kan kastes. Det er referansen på mellomnivå for alle ikke-sterke referanser.
Hver gang en programmerer gjør noe med Java®, det være seg så enkelt som å lage en streng eller lage komplekse funksjoner, blir det vist en henvisning. Programmereren trenger ikke å skrive en referansekommando; referansen blir laget automatisk og er som standard en sterk referanse. Dette betyr at dataene fra referansen ikke kan kastes, fordi de er koblet til integrerte objekter som trengs for hele skriptet.
Noen data må imidlertid kastes fordi de ellers tar mye minne. For eksempel, hvis en programmerer bygger et skript der serienumre brukes eller andre midlertidige opplysninger er samlet eller opprettet, blir det å holde på denne informasjonen skadelig. Java®-programmet ville nekte å kaste informasjonen, selv når den ikke er nødvendig, og skriptet trenger mer og mer minne for å fungere.
Ved å spesifisere en streng eller seksjon som en myk referanse, som må plasseres i kodingen, forteller dette søppelsamleren at dataene kan frigis. Når den er utgitt, vil strengen eller delen lese som "null". Avfallssamleren, avhengig av innstillingen, bestemmer når dataene skal kastes ut.
Det er tre ikke-sterke referanser: myk referanse, svak referanse og fantomreferanse. Den svake referansen er den svakeste, og dataene blir kastet raskt. Myke referanser, som er best for skript der midlertidige data kan brukes flere ganger, er neste i rekken. En fantomreferanse blir kastet nesten automatisk, i løpet av et sekund, og bør brukes sparsomt.
Hvor lang tid en myk referanse forblir, avhenger vanligvis av mengden minne i datamaskinen. Hvis minnet er fullt, vil søppelsamleren først ødelegge alle de svake referansene. Når alle de svake referansene er borte, og hvis minnet fremdeles trenger å rense data, blir myke referanser kastet ut neste.