Hvad er Garbage Collection i Java?

Hvad er Garbage Collection i Java?

Affaldsopsamling i Java er en proces, hvorved programmerne udfører hukommelsesstyring automatisk. Garbage Collector (GC) finder de ubrugte genstande og sletter dem for at genvinde hukommelsen. I Java opnås dynamisk hukommelsesallokering af objekter ved hjælp af den nye operator, der bruger noget hukommelse, og hukommelsen forbliver allokeret, indtil der er referencer til brugen af ​​objektet.

Når der ikke er nogen referencer til et objekt, antages det, at det ikke længere er nødvendigt, og den hukommelse, som objektet optager, kan genvindes. Der er ikke noget eksplicit behov for at ødelægge et objekt, da Java håndterer de-allokeringen automatisk.

Teknikken, der opnår dette, er kendt som Dagrenovation. Programmer, der ikke de-allokerer hukommelse, kan i sidste ende gå ned, når der ikke er nogen hukommelse tilbage i systemet at allokere. Disse programmer siges at have hukommelseslækager.

Affaldsindsamling i Java sker automatisk i løbet af programmets levetid, hvilket eliminerer behovet for at deallokere hukommelse og derved undgå hukommelseslækager.

I C-sprog er det programmørens ansvar at de-allokere hukommelse tildelt dynamisk ved hjælp af free()-funktionen. Det er her, Java-hukommelseshåndtering fører an.

Bemærk: Alle objekter er oprettet i Heap sektion af hukommelsen. Mere om dette i a later tutorial.

Eksempel: At lære Garbage Collector Mechanism i Java

Trin 1) Kopier folloenwing kode ind i en editor.

class Student{
int a;
int b;
  public void setData(int c,int d){
    a=c;
    b=d;
  }
  public void showData(){
    System.out.println("Value of a = "+a);
    System.out.println("Value of b = "+b);
  }
  public static void main(String args[]){
    Student s1 = new Student();
    Student s2 = new Student();
    s1.setData(1,2);
    s2.setData(3,4);
    s1.showData();
    s2.showData();
    //Student s3;
    //s3=s2;
    //s3.showData();
    //s2=null;
    //s3.showData();
    //s3=null;
    //s3.showData();
  }
}

Trin 2) Gem, kompilér og kør koden. Som vist i diagrammet oprettes to objekter og to referencevariable.


Garbage Collector Mekanisme

Trin 3) Fjern kommentar linje # 20,21,22. Gem, kompilér og kør koden.

Trin 4) Som vist i diagrammet nedenfor, peger to referencevariabler på det samme objekt.

Garbage Collector Mekanisme

Trin 5) Fjern kommentar linje # 23 & 24. Kompiler, gem og kør koden

Trin 6) Som vist i diagrammet nedenfor bliver s2 null, men s3 peger stadig på objektet og er ikke berettiget til java-skraldeindsamling.


Garbage Collector Mekanisme

Trin 7) Fjern kommentar linje # 25 & 26. Gem, kompilér & kør koden

Trin 8) På dette tidspunkt er der ingen referencer, der peger på objektet og bliver berettiget til affaldsindsamling. Det vil blive fjernet fra hukommelsen, og der er ingen måde at hente det tilbage.

Lær Garbage Collector

Hvordan sletter man et objekt i Java?

1) Hvis du ønsker at gøre dit objekt kvalificeret til Garbage Collection, skal du tildele dens referencevariabel til null.

2) Primitive typer er ikke objekter. De kan ikke tildeles null.

Sådan sletter du et objekt i Java