Kas yra minkštoji nuoroda?

Java® kodavimo kalboje nuolat daromos nuorodos į objektus, eilutes ir kintamuosius, net jei programuotojas apie šias nuorodas nežino. Šios nuorodos tiesiogiai susisiekia su šiukšlių surinkėju – funkcija, kuri surenka nereikalingą informaciją ir išmeta ją, kad ji nebeužimtų atminties. Pagal numatytuosius nustatymus visos nuorodos yra stiprios nuorodos ir nustatomos be jokio kodavimo, tai reiškia, kad jos nepateikiamos šiukšlių surinkėjui. Minkšta nuoroda leidžia išmesti duomenis. Tai vidutinio lygio nuoroda visoms nestiprioms nuorodoms.

Kai programuotojas ką nors daro naudodamas „Java®“, nesvarbu, ar tai būtų paprastas eilutės sudarymas ar sudėtingų funkcijų kūrimas, daroma nuoroda. Programuotojas neturi rašyti nuorodos komandos; nuoroda daroma automatiškai ir pagal numatytuosius nustatymus yra stipri nuoroda. Tai reiškia, kad nuorodos duomenų negalima išmesti, nes jie yra susieti su neatsiejamais objektais, reikalingais visam scenarijui.

Tačiau kai kuriuos duomenis reikia išmesti, nes kitaip jie užima daug atminties. Pavyzdžiui, jei programuotojas sukuria scenarijų, kuriame naudojami serijos numeriai arba renkama arba sukuriama kita laikina informacija, šios informacijos laikymas tampa žalingas. Java® programa atsisakytų išmesti informaciją net tada, kai ji nereikalinga, o scenarijui funkcionuoti reikėtų vis daugiau atminties.

Nurodant eilutę ar skyrių kaip minkštą nuorodą, kurią reikia įdėti į kodavimą, šiukšlių surinkėjui pranešama, kad duomenis galima išleisti. Atleidus, eilutė arba skyrius bus rodomi kaip „nulis“. Šiukšlių surinkėjas, priklausomai nuo jo nustatymo, nuspręs, kada duomenis reikia išmesti.

Yra trys nestiprios nuorodos: minkštoji nuoroda, silpna nuoroda ir fantominė nuoroda. Silpna nuoroda yra silpniausia, o jos duomenys greitai išmetami. Toliau eilėje yra minkštos nuorodos, kurios geriausiai tinka scenarijus, kuriuose laikini duomenys gali būti naudojami kelis kartus. Fantominė nuoroda išmetama beveik automatiškai, per sekundę ir turėtų būti naudojama taupiai.

Laikotarpis, kiek išlieka minkšta nuoroda, paprastai priklauso nuo kompiuterio atminties kiekio. Jei atmintis pilna, šiukšlių surinkėjas pirmiausia sunaikins visas silpnas nuorodas. Kai nebėra visų silpnų nuorodų ir jei atmintyje vis tiek reikia išvalyti duomenis, tada minkštosios nuorodos bus išmestos toliau.