CodeGym /Java kurs /Java-syntaks /Objektsynlighet og nullreferanser

Objektsynlighet og nullreferanser

Java-syntaks
Nivå , Lekse
Tilgjengelig

"Hei, Amigo!"

"Hei, Ellie. Har du noe interessant å fortelle meg?"

"I dag skal vi snakke om hvor lenge et objekt forblir i minnet, også kjent som objektets levetid. Etter at et objekt er opprettet, eksisterer det (lever) så lenge minst én variabel lagrer adressen sin (det er minst en referanse til det). Hvis det ikke er flere referanser, dør objektet. Her er noen eksempler:"

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;
    
    
   }
}

"Tommy-objektet eksisterer bare for én linje fra det ble opprettet. Den eneste variabelen som refererer til objektet er satt til null i neste linje, så objektet blir ødelagt av Java Virtual Machine (JVM)."

"Sammy-objektet lagres i cat1- variabelen etter at det er opprettet. Eller, mer nøyaktig, variabelen lagrer en referanse til det. Et par linjer senere blir denne referansen kopiert til cat2 . Deretter lagres en referanse til et annet objekt til cat1 . Nå er det bare cat2 som refererer til Sammy . Til slutt settes den siste gjenværende referansen til objektet til null i den siste linjen i hovedmetoden."

"Missy-objektet eksisterer kun for én linje etter at det ble opprettet. På neste linje settes cat2- variabelen til en annen verdi, og referansen til Missy går tapt. Objektet kan ikke lenger nås, så det anses som søppel av system (dvs. objektet er dødt)."

"Når det er opprettet, eksisterer Ginger-objektet til metoden avsluttes. På slutten av metoden blir cat2- variabelen ødelagt, og Ginger blir ødelagt umiddelbart etter det."

"Jeg skjønner."

"Men hvis vi lager et Cat- objekt inne i en metode og lagrer en referanse til det i en forekomstvariabel, vil Cat- objektet eksistere så lenge det refereres til av et annet objekt som fortsatt er i live."

"Egentlig blir et objekt vanligvis ikke umiddelbart ødelagt av systemet. Java Virtual Machine utfører "søppelsamling" fra tid til annen, og ødelegger objekter som er merket for sletting. Mer om den prosessen senere."

"Og hvis vi ikke lenger vil at en variabel skal referere til et objekt, kan vi sette den til null , eller tilordne den en referanse til et annet objekt."

Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION