Mis on pehme viide?

Java® kodeerimiskeeles viidatakse pidevalt objektidele, stringidele ja muutujatele, isegi kui programmeerija pole neist viidetest teadlik. Need viited suhtlevad otse prügikoristajaga – funktsiooniga, mis kogub kokku mittevajaliku teabe ja viskab selle minema, et see ei võtaks enam mälu. Vaikimisi on kõik viited tugevad viited ja seatakse ilma igasuguse kodeerimiseta, mis tähendab, et neid ei väljastata prügikogujale. Pehme viide võimaldab andmed ära visata. See on keskmise taseme viide kõigile mittetugevatele viidetele.

Kui programmeerija Java®-iga midagi teeb, olgu see siis nii lihtne kui stringi koostamine või keerukate funktsioonide loomine, viidatakse sellele. Programmeerija ei pea kirjutama viitekäsku; viide tehakse automaatselt ja see on vaikimisi tugev viide. See tähendab, et viiteandmeid ei saa ära visata, kuna need on lingitud kogu skripti jaoks vajalike terviklike objektidega.

Mõned andmed tuleb siiski ära visata, sest muidu võtavad need palju mälu. Näiteks kui programmeerija koostab skripti, milles kasutatakse seerianumbreid või kogutakse või luuakse muud ajutist teavet, muutub selle teabe hoidmine kahjulikuks. Java® programm keelduks teavet minema viskamast, isegi kui see pole vajalik, ja skript vajaks toimimiseks üha rohkem mälu.

Määrates pehme viitena stringi või jaotise, mis tuleb kodeerida, annab see prügikogujale teada, et andmeid saab vabastada. Pärast vabastamist loetakse string või jaotis nulliks. Prügikorjaja otsustab olenevalt selle seadistusest, millal andmed välja visata.

On kolm mittetugevat viidet: pehme viide, nõrk viide ja fantoomviide. Nõrk viide on kõige nõrgem ja selle andmed visatakse kiiresti minema. Järjekorras on pehmed viited, mis sobivad kõige paremini skriptide jaoks, kus ajutisi andmeid võib mitu korda kasutada. Fantoomviide visatakse minema peaaegu automaatselt, sekundi jooksul ja seda tuleks kasutada säästlikult.

Aeg, milleks pehme viide püsib, sõltub tavaliselt arvuti mälumahust. Kui mälu on täis, hävitab prügikorja kõigepealt kõik nõrgad viited. Kui kõik nõrgad viited on kadunud ja kui mälu vajab endiselt andmete tühjendamist, visatakse järgmisena välja pehmed viited.