CodeGym /Java kursus /Java syntaks /Objektsynlighed og nulreferencer

Objektsynlighed og nulreferencer

Java syntaks
Niveau , Lektie
Ledig

"Hej, Amigo!"

"Hej, Ellie. Har du noget interessant at fortælle mig?"

"I dag vil vi tale om, hvor længe et objekt forbliver i hukommelsen, også kendt som objektets levetid. Efter et objekt er skabt, eksisterer det (lever), så længe mindst én variabel gemmer dens adresse (der er mindst én henvisning til det). Hvis der ikke er flere referencer, dør objektet. Her er nogle 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 kun for én linje fra dets oprettelse. Den eneste variabel, der refererer til objektet, er sat til null i den næste linje, så objektet ødelægges af Java Virtual Machine (JVM)."

"Sammy-objektet gemmes i cat1- variablen, efter det er oprettet. Eller mere præcist, variablen gemmer en reference til det. Et par linjer senere kopieres denne reference til cat2 . Derefter gemmes en reference til et andet objekt til cat1 . Nu er det kun cat2 der refererer til Sammy . Endelig er den sidste resterende reference til objektet sat til null i den sidste linje i hovedmetoden."

"Missy-objektet eksisterer kun for én linje efter dets oprettelse. I den næste linje sættes cat2- variablen til en anden værdi, og referencen til Missy går tabt. Objektet kan ikke længere tilgås, så det betragtes som skrald af system (dvs. objektet er dødt)."

"Når det er oprettet, eksisterer Ginger-objektet, indtil metoden slutter. I slutningen af ​​metoden ødelægges cat2- variablen, hvor Ginger bliver ødelagt umiddelbart efter det."

"Jeg ser."

"Men hvis vi opretter et Cat- objekt inde i en metode og gemmer en reference til det i en instansvariabel, vil Cat- objektet eksistere, så længe det refereres af et andet objekt, der stadig er i live."

"Egentlig bliver et objekt normalt ikke umiddelbart ødelagt af systemet. Java Virtual Machine udfører 'skraldeopsamling' fra tid til anden og ødelægger objekter, der er markeret til sletning. Mere om den proces senere."

"Og hvis vi ikke længere ønsker, at en variabel skal referere til et objekt, kan vi indstille den til null eller tildele den en reference til et andet objekt."

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