– Szia Amigo!
"Hé, Ellie. Van valami érdekes mondanivalód?"
"Ma arról fogunk beszélni, hogy mennyi ideig marad egy objektum a memóriában, más néven az objektum élettartama. Egy objektum létrehozása után addig létezik (él), amíg legalább egy változó tárolja a címét (legalább egy van). hivatkozás rá). Ha nincs több hivatkozás, az objektum meghal. Íme néhány példa:"
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;
┃┗
┗
}
}
"A Tommy objektum csak egy sorra létezik a létrehozásától számítva. Az egyetlen változó, amely az objektumra hivatkozik, nullára van állítva a következő sorban, így az objektumot a Java Virtual Machine (JVM) megsemmisíti."
"A Sammy objektum létrehozása után a cat1 változóban tárolódik . Pontosabban, a változó tárol egy hivatkozást. Néhány sorral később ez a hivatkozás a cat2- be kerül . Ezután egy másik objektumra való hivatkozás mentésre kerül a cat1 . Most csak a cat2 hivatkozik Sammy-re . Végül az objektum utolsó fennmaradó hivatkozása nullára lesz állítva a fő metódus utolsó sorában."
"A Missy objektum csak egy sor erejéig létezik a létrehozása után. A következő sorban a cat2 változó egy másik értékre lesz állítva, és a Missy- re való hivatkozás elveszik. Az objektum már nem érhető el, ezért az objektum szemétnek tekinti rendszer (azaz az objektum halott).
"A létrehozást követően a Ginger objektum a metódus végéig létezik. A metódus végén a cat2 változó megsemmisül, a Ginger pedig azonnal megsemmisül."
"Látom."
"De ha létrehozunk egy Cat objektumot egy metóduson belül, és hivatkozást tárolunk rá egy példányváltozóban, akkor a Cat objektum mindaddig létezni fog, amíg egy másik, még élő objektum hivatkozik rá."
"Valójában egy objektumot általában nem semmisít meg azonnal a rendszer. A Java Virtual Machine időről időre "szemétgyűjtést" végez, megsemmisítve a törlésre megjelölt objektumokat. Erről a folyamatról bővebben később."
"És ha már nem akarjuk, hogy egy változó hivatkozzon egy objektumra, akkor nullára állíthatjuk , vagy hivatkozást rendelhetünk hozzá egy másik objektumhoz."