Ce este Garbage Collection în Java?
Colecția de deșeuri în Java este un proces prin care programele gestionează automat memoria. Garbage Collector (GC) găsește obiectele neutilizate și le șterge pentru a recupera memoria. În Java, alocarea dinamică a memoriei obiectelor se realizează folosind noul operator care folosește o anumită memorie și memoria rămâne alocată până când există referințe pentru utilizarea obiectului.
Când nu există referințe la un obiect, se presupune că nu mai este necesară, iar memoria, ocupată de obiect, poate fi recuperată. Nu este nevoie explicită de a distruge un obiect, deoarece Java gestionează automat alocarea.
Tehnica care realizează acest lucru este cunoscută sub numele de Colecția de gunoi . Programele care nu alocă memorie se pot bloca în cele din urmă atunci când nu mai există memorie în sistem de alocat. Se spune că aceste programe au scurgeri de memorie.
Colectarea deșeurilor în Java are loc automat pe durata de viață a programului, eliminând necesitatea de a aloca memorie și evitând astfel scurgerile de memorie.
În limbajul C, este responsabilitatea programatorului să aloce memoria alocată dinamic folosind funcția free (). Aici conduce managementul memoriei Java.Notă: Toate obiectele sunt create în secțiunea Heap a memoriei. Mai multe despre acest lucru într-un tutorial ulterior.
Exemplu: Pentru a afla mecanismul de colectare a gunoiului în Java
Pasul 1) Copiați următorul cod într-un editor.
clasa Student {int a;int b;public void setData (int c, int d) {a = c;b = d;}public nul showData () {System.out.println ("Valoarea a =" + a);System.out.println ("Valoarea lui b =" + b);}public static main main (String args []) {Student s1 = student nou ();Student s2 = student nou ();s1.setData (1,2);s2.setData (3,4);s1.showData ();s2.showData ();// Student s3;// s3 = s2;//s3.showData ();// s2 = nul;//s3.showData ();// s3 = nul;//s3.showData ();}}
Pasul 2) Salvați, compilați și rulați codul. Așa cum se arată în diagramă, sunt create două obiecte și două variabile de referință.
Pasul 3) Linia de comentariu # 20,21,22. Salvați, compilați și rulați codul.
Pasul 4) După cum se arată în diagrama de mai jos, două variabile de referință indică același obiect.
Pasul 5) Linia de comentariu nr. 23 și 24. Compilați, salvați și rulați codul
Pasul 6) După cum se arată în diagrama de mai jos, s2 devine nul, dar s3 arată în continuare spre obiect și nu este eligibil pentru colectarea gunoiului java.
Pasul 7) Linia de comentariu nr. 25 și 26. Salvați, compilați și executați codul
Pasul 8) În acest moment nu există referințe care indică obiectul și devine eligibil pentru colectarea gunoiului. Acesta va fi eliminat din memorie și nu există nicio modalitate de recuperare.
Cum să ștergeți un obiect în Java?
1) Dacă doriți ca obiectul dvs. să fie eligibil pentru Colecția de gunoi, atribuiți variabila de referință la nul.
2) Tipurile primitive nu sunt obiecte. Nu pot fi atribuite nule.