Što je meka referenca?

U jeziku kodiranja Java® stalno se upućuju na objekte, nizove i varijable, čak i ako programer nije svjestan tih referenci. Ove reference izravno komuniciraju sa sakupljačem smeća, funkcijom koja prikuplja nepotrebne informacije i odbacuje ih tako da više ne zauzimaju memoriju. Prema zadanim postavkama, sve reference su jake reference i postavljene su bez ikakvog kodiranja, što znači da se ne puštaju u sakupljač smeća. Meka referenca omogućuje odbacivanje podataka. To je referenca srednje razine za sve nejake reference.

Kad god programer radi bilo što s Javom®, bilo jednostavno kao što je izrada niza ili stvaranje složenih funkcija, napravi se referenca. Programer ne mora napisati referentnu naredbu; referenca se stvara automatski i prema zadanim je postavkama jaka referenca. To znači da se podaci iz reference ne mogu baciti, jer su povezani s integralnim objektima potrebnim za cijelu skriptu.

Neke podatke ipak treba baciti jer inače zauzimaju puno memorije. Na primjer, ako programer izradi skriptu u kojoj se koriste serijski brojevi ili se prikupljaju ili stvaraju druge privremene informacije, zadržavanje tih informacija postaje štetno. Java® program bi odbio baciti informacije, čak i kada su nepotrebne, a skripta bi trebala sve više i više memorije za funkcioniranje.

Određivanjem niza ili odjeljka kao meke reference, koji se mora staviti u kodiranje, to govori sakupljaču smeća da se podaci mogu osloboditi. Nakon otpuštanja, niz ili odjeljak će se čitati kao “null”. Sakupljač smeća, ovisno o svojoj postavci, odlučit će kada se podaci trebaju izbaciti.

Postoje tri nejake reference: meka referenca, slaba referenca i fantomska referenca. Slaba referenca je najslabija, a njeni podaci se brzo bacaju. Sljedeće su meke reference, koje su najbolje za skripte u kojima se privremeni podaci mogu koristiti nekoliko puta. Fantomska referenca odbacuje se gotovo automatski, u roku od jedne sekunde, i treba je koristiti štedljivo.

Dužina trajanja meke reference obično ovisi o količini memorije u računalu. Ako je memorija puna, sakupljač smeća će prvo uništiti sve slabe reference. Kada sve slabe reference nestanu i ako memorija još uvijek treba očistiti podatke, tada će se soft reference izbaciti sljedeće.