Middle
Kus hoitakse mälus viite tüüpe ja mis nendega toimub rakenduse töö ajal?
sobes.tech AI
Vastus AI-lt
Viite tüübid salvestatakse virna (Heap).
Programmi käitamise ajal toimub järgmist:
- Loomine: Kui luuakse viidetüüpi objekt (näiteks,
new MyClass()), eraldatakse selle objekti jaoks mälu virnas. Muutuja, mis seda hoiab, sisaldab viidet sellele mäluosale. - Juurdepääs: Objektile pääseb ligi selle viite kaudu, kasutades selle välju ja meetodeid.
- ** Prügikoristus (Garbage Collection):** Kui objekt ei ole enam kättesaadav ühegi aktiivse programmi osa poolt (tema viiteid ei ole), võib prügikoristus vabastada selle mälu virnas. See protsess toimub automaatselt "taustal" ning ei nõua programmeerija otsest sekkumist. Prügikoristus skaneerib regulaarselt virna, leiab kättesaamatud objektid ja tagastab nende mälu süsteemile.
- Muudatus: Objekti sisu virnas võib muutuda. Kui mitu viite muutujat osutavad samale objektile, on selle oleku muutused nähtavad teiste kaudu.
- Viite ümbermääramine: Viite muutujat saab ümber määrata viitama teisele objektile või
null-ile.
Näide:
// String objekti loomine virnas (kettad - viidetüüpi)
String myString = "Hello";
// myString_2 muutuja osutab samale objektile
String myString_2 = myString;
// Uue String objekti loomine virnas ja viite ümbermääramine
myString = "World";
// Nüüd osutab myString teisele objektile, ja myString_2 jätkab vanale