Sobes.tech
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é:

  1. 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.
  2. Prístup: Prístup k poliam a metódam objektu sa vykonáva cez tento odkaz.
  3. 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.
  4. 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é.
  5. 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ý