"Bună, Amigo!"
— Hei, Ellie. Ai ceva interesant să-mi spui?
„Astăzi vom vorbi despre cât timp rămâne un obiect în memorie, cunoscut și sub numele de durata de viață a obiectului. După ce un obiect este creat, el există (trăiește) atâta timp cât cel puțin o variabilă își stochează adresa (există cel puțin o referință la acesta). Dacă nu mai există referințe, obiectul moare. Iată câteva exemple:"
public class MainClass
{
public static void main (String[] args)
{
┏ Tommy
┃ Cat cat = new Cat("Tommy");
┃ cat = null;
┗
┏ Sammy
┃ Cat cat1 = new Cat("Sammy");
┃┏ Missy
┃┃Cat cat2 = new Cat("Missy");
┃┃cat2 = cat1;
┃┗
┃┏ Ginger
┃┃cat1 = new Cat("Ginger");
┃┃cat2 = null;
┃┗
┗
}
}
„Obiectul Tommy există pentru o singură linie de la crearea sa. Singura variabilă care face referire la obiect este setată la nul chiar în linia următoare, astfel încât obiectul este distrus de Java Virtual Machine (JVM).”
„Obiectul Sammy este stocat în variabila cat1 după ce este creat. Sau, mai precis, variabila stochează o referință la el. Câteva rânduri mai târziu, această referință este copiată în cat2 . Apoi o referință la un alt obiect este salvată în cat1 . Acum, doar cat2 face referire la Sammy . În cele din urmă, ultima referință rămasă la obiect este setată la null în ultima linie a metodei principale."
„Obiectul Missy există doar pentru o linie după crearea sa. În următoarea linie, variabila cat2 este setată la o altă valoare, iar referința la Missy se pierde. Obiectul nu mai poate fi accesat, deci este considerat un gunoi de către sistem (adică obiectul este mort)."
"Odată creat, obiectul Ginger există până la sfârșitul metodei. La sfârșitul metodei, variabila cat2 este distrusă, Ginger fiind distrus imediat după aceea."
"Înțeleg."
„Dar dacă creăm un obiect Cat în interiorul unei metode și stocăm o referință la acesta într-o variabilă de instanță, atunci obiectul Cat va exista atâta timp cât este referit de un alt obiect care este încă în viață.”
„De fapt, un obiect nu este de obicei distrus imediat de către sistem. Mașina virtuală Java realizează din când în când „colectarea gunoiului”, distrugând obiectele care au fost marcate pentru ștergere. Mai multe despre acest proces mai târziu.”
„Și, dacă nu mai dorim ca o variabilă să facă referire la un obiect, îl putem seta la null sau îi putem atribui o referință unui alt obiect.”
GO TO FULL VERSION