Sobes.tech
Middle

Hol tárolódnak a referencia típusok, és mi történik velük az alkalmazás futása közben?

sobes.tech MI

Válasz az MI-től

A referencia típusok a heap-ben (kupacban) tárolódnak.

Az alkalmazás futása közben a következő történik:

  1. Létrehozás: Amikor egy referencia típusú objektumot hozunk létre (például, new MyClass()), akkor ennek az objektumnak a memóriája a heap-ben kerül lefoglalásra. A változó, ami tartalmazza, egy hivatkozást tartalmaz erre a memóriarészre.
  2. Hozzáférés: A tárgy mezőihez és metódusaihoz való hozzáférés ezen a hivatkozáson keresztül történik.
  3. Szemétgyűjtés (Garbage Collection): Amikor egy objektum többé nem érhető el egy aktív programrészből (nincs rá hivatkozás), a szemétgyűjtő felszabadíthatja a heap-ben elfoglalt memóriát. Ez a folyamat automatikusan "háttérben" történik, és nem igényel explicit beavatkozást a fejlesztőtől. A szemétgyűjtő rendszeresen átvizsgálja a heap-et, megtalálja az elérhetetlen objektumokat, és visszaadja a memóriát a rendszernek.
  4. Módosítás: Az objektum tartalma a heap-ben változhat. Ha több referencia változó ugyanarra az objektumra mutat, a változások az állapotában más változók által is láthatók.
  5. Referencia újra hozzárendelése: Egy referencia változó újra hozzárendelhető másik objektumra vagy null-ra.

Példa:

// String objektum létrehozása a heap-ben (karakterláncok - referencia típus)
String myString = "Hello";

// A myString_2 változó ugyanarra az objektumra mutat
String myString_2 = myString;

// Új String objektum létrehozása a heap-ben és a referencia újra hozzárendelése
myString = "World";

// Most myString egy másik objektumra mutat, míg myString_2 továbbra is az eredetire