Colectarea gunoiului în Java: Tot ce trebuie să știți



Acest articol despre colectarea gunoiului în Java vă oferă o idee clară despre modul în care funcționează, tipurile sale și diferite metode din colectarea gunoiului în Java

este un limbaj de programare de uz general și dacă în cazul în care veniți cu o situație în care există date neutilizate în programul dvs. și nu știți cum să le gestionați, Garbage Collection în Java vă este util. Așadar, scriu acest articol pentru a vă ajuta să gestionați aceste funcții.

Voi acoperi subiectele în următoarea ordine:





Să începem!

Ce este Garbage Collection în Java?

În Java, programatorii se confruntă cu problema de a trebui să distrugă obiecte care nu sunt folosite. Dar cu Colectorul de gunoi, acest lucru poate fi ușor de îngrijit. Obiectivul principal al acestui Garbage Collector este de a elibera memoria heap prin distrugerea obiectelor care nu conțin o referință. Tehnica este cunoscută sub numele de Colectarea gunoiului.



De asemenea, este considerat un program care ajută la gestionarea automată a memoriei. Când sunt rulate pe JVM, obiecte sunt create pe heap, care este de fapt o porțiune de memorie dedicată programului. În cele din urmă, unele obiecte nu vor mai fi necesare. colector de gunoi găsește aceste obiecte neutilizate și le șterge pentru a elibera memorie.

  • Programele care nu alocă memorie se pot rupe în cele din urmă atunci când nu mai există memorie în sistem de alocat. Se spune că toate aceste programe au scurgeri de memorie.
  • Colectarea deșeurilor în Java are loc automat pe durata de viață a unui program, eliminând necesitatea de a aloca memorie și, prin urmare, evitând scurgerile de memorie.
  • Metode precum liber() în C și șterge() în C ++ sunt utilizate, dar, în Java, se efectuează automat. Asa de, oferă o mai bună gestionare a memoriei.

Acum, să înțelegem cum funcționează această colectare automată a gunoiului în Java.

Notă : Se spune că un obiect este eligibil pentru colectarea gunoiului dacă nu este accesibil.



cum se închide un program în java

Cum funcționează colectarea gunoiului?

Colecția de gunoi este un proces de lucru cu memoria Heap și, de asemenea marcă sau identificați obiectele inaccesibile și distrugeți-le cu compactare.

Colectarea deșeurilor în Java este un proces automat și programatorul nu trebuie să marcheze explicit obiectele care trebuie șterse. Implementarea trăiește în principal în . Fiecare JVM poate implementa colectarea gunoiului. Singura cerință este ca aceasta să îndeplinească specificațiile JVM.

Chiar dacă există multe JVM-uri disponibile, Oracle’s HotSpot este de departe cea mai comună deoarece oferă un set robust și matur de opțiuni de colectare a gunoiului.

  • HotSpot are mai multe colectoare de gunoi care sunt optimizate pentru diferite cazuri de utilizare, iar toți colectorii de gunoi urmează același proces de bază.
  • În primul pas, obiecte neriferențiate sunt identificate și marcate ca fiind pregătite pentru colectarea gunoiului.
  • În al doilea pas, obiectele marcate sunt șterse. Opțional, memoria poate fi compactată după ce colectorul de gunoi șterge obiecte, astfel încât obiectele rămase se află într-un bloc adiacent la începutul heap-ului. Procesul de compactare face mai ușoară alocarea de memorie noilor obiecte secvențial după blocul de memorie alocat obiectelor existente.

Toți colectorii de gunoi HotSpot implementează o strategie de colectare generațională care clasifică obiectele în funcție de vârstă. Rațiunea din spatele colectării generaționale a gunoiului este că majoritatea obiectelor sunt de scurtă durată și vor fi gata pentru colectarea gunoiului la scurt timp după creare.

convertiți data șirului în data respectivă

Acum să vedem care sunt diferitele tipuri de colectori de gunoi.

Tipuri de colector de gunoi

JVM oferă patru colectori de gunoi diferiți, toți generaționali. Fiecare are propriile sale avantaje și limitări. Alegerea colectorului de deșeuri de utilizat revine utilizatorului și pot exista numeroase diferențe în ceea ce privește capacitatea de producție și pauzele aplicației.

Există și anume 4 tipuri de colectoare de gunoi.

  • Colector de gunoi în serie (GC) :Toate evenimentele de colectare a gunoiului sunt efectuate în serie într-un singur fir. Compactarea se execută după fiecare colectare a gunoiului.
  • GC paralel / de transfer: Mai multe fire sunt utilizate pentru colectarea gunoiului minor / mic. Un singur fir este utilizat pentru colectarea majoră a gunoiului și compactarea generației vechi. De asemenea, varianta paralelă folosește mai multe fire pentru colectarea majoră a gunoiului și compactarea generației vechi.
  • CMS Collector :Mai multe fire sunt utilizate pentru colectarea deșeurilor mici / minore utilizând același algoritm ca Parallel. Majoritatea colecției de gunoi este cu mai multe fire, dar CMS rulează concomitent împreună cu procesele aplicației pentru a minimiza evenimentele aplicației. Nu se efectuează compactare.
  • Colector G1 :Acest colector de gunoi este destinat în principiu ca un înlocuitor pentru CMS. Este paralel și concomitent ca CMS, dar funcționează destul de diferit atunci când este comparat cu colectoarele de gunoi mai vechi.

Să înțelegem avantajele colectării deșeurilor în Java.

Avantaje

  • Cel mai mare beneficiu al colectării gunoiului Java este că este automat gestionează ștergerea a obiectelor neutilizate sau a unor obiecte inaccesibile pentru a elibera resurse de memorie.
  • Garbage Collection este acum o nouă componentă standard a multor limbaje de programare populare.
  • Acesta face ca memoria Java să fie eficientă. Acest lucru se datorează faptului că colectorul de gunoi elimină obiectele neriferențiate din memoria heap.
  • Este realizat automat de către colectorul de gunoi care face parte din JVM.

Cele mai bune practici

Cea mai bună abordare pentru a vă adapta la colectarea gunoiului Java este setarea de steaguri pe JVM. Steagurile au capacitatea de a regla colectorul de gunoi care urmează să fie utilizat. Ajută la transformarea acestuia în cea mai potrivită pentru procesarea backend-ului, unde sunt acceptabile pauze lungi pentru colectarea gunoiului.

Un alt lucru de remarcat aici este că colectorul de gunoi CMS este conceput pentru a minimiza pauzele, ceea ce îl face ideal pentru aplicațiile GUI în care capacitatea de răspuns este extrem de importantă. Reglarea fină suplimentară poate fi realizată prin schimbarea dimensiunii grămezii sau a secțiunilor sale și măsurarea eficienței colectării gunoiului.

Să aruncăm o privire la acest program.

clasa Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Value of a =' + a) System.out.println ('Value of b =' + b)} public static void main (String args []) {Edureka e1 = new Edureka () Edureka e2 = new Edureka () e1.setData (1,2) e2.setData (3, 4) e1.showData () e2.showData () // Edureka e3 // e3 = e2 //e3.showData () // e2 = null //e3.showData () // e3 = null //e3.showData ()}}

În acest caz, cei doisunt create obiecte și două variabile de referință. Dacă adăugați o altă comandă e3 = Nul,două variabile de referință vor indica același obiect. Și dacă nu există nicio referire la variabilă, e3 = e2e3.showData () În acest moment, nu există referințe care indică obiectul și devine eligibil pentru colectarea gunoiului.

Acest lucru ne aduce la sfârșitul acestui articol despre „Colecția de gunoi în Java”. Am învățat cum să eliminăm obiectele neutilizate din grămadă și diferitele tipuri de colecție.

cum se instalează eclipse ide

Dacă ați găsit acest articol despre „Colecția de gunoi în Java”, consultați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Suntem aici pentru a vă ajuta cu fiecare pas din călătoria dvs., venim cu un curriculum care este conceput pentru studenți și profesioniști care doresc să fie un dezvoltator Java.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestei „Colecții de gunoi în Java ' și ne vom contacta cât mai curând posibil.