Mikä on pehmeä viite?

Java® -koodauskielellä viitataan jatkuvasti objekteihin, merkkijonoihin ja muuttujiin, vaikka ohjelmoija ei olisi tietoinen näistä viittauksista. Nämä viitteet kommunikoivat suoraan roskankeräimen kanssa, joka kerää tarpeettomat tiedot ja heittää ne pois, jotta ne eivät enää vie muistia. Oletuksena kaikki viitteet ovat vahvoja viitteitä ja ne on asetettu ilman koodausta, eli niitä ei luovuteta roskakoriin. Pehmeä viite mahdollistaa tietojen heittämisen pois. Se on keskitason viite kaikille ei-vahvoille viitteille.

Aina kun ohjelmoija tekee jotain Java®: lla, niin yksinkertaista kuin merkkijonon luominen tai monimutkaisten toimintojen luominen, viittaus tehdään. Ohjelmoijan ei tarvitse kirjoittaa viitekomentoa; viite tehdään automaattisesti ja on oletuksena vahva viite. Tämä tarkoittaa, että viittauksen tietoja ei voi heittää pois, koska ne on linkitetty kiinteisiin objekteihin, joita tarvitaan koko komentosarjalle.

Jotkut tiedot on kuitenkin heitettävä pois, koska ne vievät muuten paljon muistia. Jos esimerkiksi ohjelmoija rakentaa komentosarjan, jossa käytetään sarjanumeroita tai kerätään tai luodaan muita väliaikaisia ​​tietoja, näiden tietojen pitämisestä tulee haitallista. Java® -ohjelma kieltäytyisi heittämästä tietoja pois, vaikka niitä ei tarvittaisi, ja komentosarja tarvitsisi yhä enemmän muistia toimiakseen.

Määrittämällä merkkijonon tai osan pehmeäksi referenssiksi, joka on sijoitettava koodaukseen, tämä kertoo roskankerääjälle, että tiedot voidaan luovuttaa. Julkaisun jälkeen merkkijono tai osa lukee “nullina”. Jätehuolto päättää sen asetuksista riippuen, milloin tiedot tulee heittää pois.

Ei-vahvoja viitteitä on kolme: pehmeä viite, heikko viittaus ja fantomiviittaus. Heikko viite on heikoin, ja sen tiedot heitetään pois nopeasti. Pehmeät viitteet, jotka ovat parhaita skripteille, joissa väliaikaisia ​​tietoja voidaan käyttää useita kertoja, ovat seuraavaksi. Phantom -viite heitetään pois melkein automaattisesti sekunnissa, ja sitä tulee käyttää säästeliäästi.

Pehmeän viittauksen kesto riippuu yleensä tietokoneen muistin määrästä. Jos muisti on täynnä, roskat kerää ensin kaikki heikot viitteet. Kun kaikki heikot viittaukset ovat poissa ja jos muisti tarvitsee vielä tietojen tyhjentämistä, pehmeät viitteet heitetään seuraavaksi pois.