Middle
Kde sú uložené referenčné typy a čo sa s nimi deje počas behu aplikácie?
sobes.tech AI
Odpoveď od AI
Typy referenci sa ukladajú do haldy (Heap).
Počas behu aplikácie sa deje nasledovné:
- Vytvorenie: Pri vytvorení objektu referenčného typu (napríklad,
new MyClass()), sa pamäť pre tento objekt pridelená v halde. Premenná, ktorá ho obsahuje, obsahuje odkaz na túto časť pamäte. - Prístup: Prístup k poliam a metódam objektu sa vykonáva cez tento odkaz.
- Zber odpadu (Garbage Collection): Keď objekt už nie je dostupný z žiadnej aktívnej časti programu (na neho nie sú žiadne odkazy), zberač odpadu môže uvoľniť pamäť, ktorú zaberá v halde. Tento proces prebieha automaticky "na pozadí" a nevyžaduje explicitný zásah vývojára. Zberač odpadu periodicky prehľadáva haldu, nachádza nedostupné objekty a vracia ich pamäť systému.
- Zmena: Obsah objektu v hale sa môže meniť. Ak na ten istý objekt odkazuje viacero referenčných premenných, zmeny v jeho stave budú viditeľné cez ostatné.
- Prepis odkazu: Referenčná premenná môže byť prepísaná tak, aby ukazovala na iný objekt alebo na
null.
Príklad:
// Vytvorenie objektu String (reťazce - referenčný typ) v hale
String myString = "Hello";
// Premenná myString_2 ukazuje na ten istý objekt
String myString_2 = myString;
// Vytvorenie nového objektu String v hale a prepisovanie odkazu
myString = "World";
// Teraz myString ukazuje na iný objekt, a myString_2 stále ukazuje na starý