Middle
Kde jsou uloženy referenční typy a co se s nimi děje během běhu aplikace?
sobes.tech AI
Odpověď od AI
Referenční typy jsou uloženy na haldě (Heap).
Během běhu aplikace k tomu dochází:
- Vytvoření: Při vytváření objektu referenčního typu (například
new MyClass()) je paměť pro tento objekt přidělena na haldě. Proměnná, která ho obsahuje, obsahuje odkaz na tuto část paměti. - Přístup: Přístup k polím a metodám objektu se provádí přes tento odkaz.
- Sběr odpadu (Garbage Collection): Když objekt již není dostupný z žádné aktivní části programu (na něj nejsou žádné odkazy), může sběrač odpadu uvolnit paměť, kterou zabírá na haldě. Tento proces probíhá automaticky "na pozadí" a nevyžaduje explicitní zásah vývojáře. Sběrač odpadu periodicky prohledává haldu, nachází nedosažitelné objekty a vrací jejich paměť systému.
- Změna: Obsah objektu na haldě může být měněn. Pokud na stejný objekt odkazuje více referenčních proměnných, změny jeho stavu jsou viditelné přes ostatní.
- Přepsání odkazu: Referenční proměnná může být přepsána tak, aby odkazovala na jiný objekt nebo na
null.
Příklad:
// Vytvoření objektu String (řetězce - referenční typ) na haldě
String myString = "Hello";
// Proměnná myString_2 odkazuje na stejný objekt
String myString_2 = myString;
// Vytvoření nového objektu String na haldě a přepsání odkazu
myString = "World";
// Nyní myString odkazuje na jiný objekt, zatímco myString_2 odkazuje na starý