Middle
Gde se čuvaju referentni tipovi i šta se dešava sa njima tokom rada aplikacije?
sobes.tech АИ
Одговор од АИ
Tipovi referenci se čuvaju u hrpi (Heap).
Tokom izvršavanja aplikacije, dešava se sledeće:
- Kreiranje: Kada se kreira objekat referentnog tipa (npr.,
new MyClass()), memorija za taj objekat se dodeljuje u hrpi. Promenljiva koja ga sadrži, čuva referencu na taj deo memorije. - Pristup: Pristup poljima i metodama objekta vrši se putem te reference.
- Sakupljanje smeća (Garbage Collection): Kada objekat više nije dostupan iz bilo kog aktivnog dela programa (nema referenci na njega), sakupljač smeća može osloboditi memoriju koju zauzima u hrpi. Ovaj proces se automatski dešava "u pozadini" i ne zahteva eksplicitnu intervenciju programera. Sakupljač smeća periodično skenira hrpu, pronalazi nedostupne objekte i vraća njihovu memoriju sistemu.
- Izmena: Sadržaj objekta u hrpi može se menjati. Ako više referenci promenljivih ukazuju na isti objekat, promene u njegovom stanju biće vidljive putem drugih.
- Prepisivanje reference: Referentna promenljiva može biti prepisana da ukazuje na drugi objekat ili na
null.
Primer:
// Kreiranje String objekta (nizovi - referentni tip) u hrpi
String myString = "Hello";
// Promenljiva myString_2 ukazuje na isti objekat
String myString_2 = myString;
// Kreiranje novog String objekta u hrpi i prepisivanje reference
myString = "World";
// Sada myString ukazuje na drugi objekat, a myString_2 i dalje na stari