V kodirnem jeziku Java® se nenehno sklicujejo na predmete, nize in spremenljivke, tudi če se programer teh sklicevanj ne zaveda. Te reference komunicirajo neposredno z zbiralnikom smeti, funkcijo, ki zbira nepotrebne informacije in jih zavrže, tako da ne zavzemajo več pomnilnika. Privzeto so vse reference močne reference in so nastavljene brez kakršnega koli kodiranja, kar pomeni, da se ne sprostijo zbiralniku smeti. Mehka referenca omogoča, da se podatki zavržejo. Je referenca na srednji ravni za vse nemočne reference.
Kadar koli programer kaj naredi z Javo®, pa naj bo to tako preprosto, kot je izdelava niza ali ustvarjanje zapletenih funkcij, se naredi referenca. Programerju ni treba napisati referenčnega ukaza; sklic se izvede samodejno in je privzeto močna referenca. To pomeni, da podatkov iz reference ni mogoče zavreči, ker so povezani z integralnimi objekti, potrebnimi za celoten skript.
Nekatere podatke pa je treba zavreči, ker sicer zavzamejo veliko pomnilnika. Na primer, če programer zgradi skript, v katerem se uporabljajo serijske številke ali se zbirajo ali ustvarjajo drugi začasni deli informacij, postane zadrževanje teh informacij škodljivo. Program Java® ne bi zavrgel informacij, tudi če niso potrebne, skript pa bi potreboval vedno več pomnilnika za delovanje.
Z določitvijo niza ali odseka kot mehke reference, ki jo je treba postaviti v kodiranje, to pove zbiralcu smeti, da je mogoče podatke sprostiti. Ko je niz ali razdelek sproščen, se bo prebral kot “nič”. Zbiralnik smeti se bo glede na svojo nastavitev odločil, kdaj naj bodo podatki vrženi.
Obstajajo tri nemočne reference: mehka referenca, šibka referenca in fantomska referenca. Šibka referenca je najšibkejša in njeni podatki se hitro zavržejo. Naslednje so mehke reference, ki so najboljše za skripte, kjer se začasni podatki lahko uporabljajo večkrat. Fantomska referenca se zavrže skoraj samodejno, v eni sekundi, in jo je treba uporabljati zmerno.
Dolžina časa, v katerem ostane mehka referenca, je običajno odvisna od količine pomnilnika v računalniku. Če je pomnilnik poln, bo zbiralnik smeti najprej uničil vse šibke reference. Ko izginejo vse šibke reference in če mora pomnilnik še vedno očistiti podatke, bodo mehke reference vržene ven.