Middle
Unde sunt stocate tipurile de referință și ce se întâmplă cu ele în timpul rulării aplicației?
sobes.tech AI
Răspuns de la AI
Tipurile de referință sunt stocate în heap.
În timpul rulării aplicației, se întâmplă următoarele:
- Creare: Când se creează un obiect de tip referință (de exemplu,
new MyClass()), memoria pentru acest obiect este alocată în heap. Variabila care îl conține stochează o referință la această secțiune de memorie. - Acces: Accesul la câmpurile și metodele obiectului se face prin această referință.
- Colectarea gunoiului (Garbage Collection): Când un obiect nu mai este accesibil din nicio parte activă a programului (nu mai există referințe către el), colectorul de gunoi poate elibera memoria ocupată de acesta în heap. Acest proces are loc automat "în fundal" și nu necesită intervenție explicită din partea dezvoltatorului. Colectorul de gunoi scanează periodic heap-ul, găsește obiecte inaccesibile și le returnează memoria sistemului.
- Modificare: Conținutul obiectului din heap poate fi modificat. Dacă mai multe variabile de referință indică același obiect, modificările stării sale vor fi vizibile prin celelalte variabile.
- Reatributarea referinței: O variabilă de referință poate fi reatribuită pentru a indica către alt obiect sau către
null.
Exemplu:
// Crearea unui obiect String (șiruri - tip de referință) în heap
String myString = "Hello";
// Variabila myString_2 indică același obiect
String myString_2 = myString;
// Crearea unui nou obiect String în heap și reatributarea referinței
myString = "World";
// Acum myString indică către un alt obiect, iar myString_2 indică în continuare către cel vechi