Zbiranje smeti v Javi: Vse, kar morate vedeti



Ta članek o zbiranju smeti v Javi vam daje jasno predstavo o tem, kako deluje, vrste in različni načini zbiranja smeti v Javi.

je programski jezik za splošno uporabo in če v primeru, da v vašem programu obstajajo neuporabljeni podatki in ne veste, kako z njimi ravnati, pride Garbage Collection v Javi prav. Torej, pišem ta članek, da vam pomagam pri ravnanju s temi funkcijami.

Teme bom obravnaval v naslednjem vrstnem redu:





Začnimo!

Kaj je zbiranje smeti v Javi?

V Javi se programerji soočajo z vprašanjem, da bi morali uničiti predmetov ki niso v uporabi. Toda z Zbiralcem smeti je za to enostavno poskrbeti. Glavni cilj tega zbiralca smeti je osvoboditi kup pomnilnika z uničenjem predmetov, ki ne vsebujejo sklica. Tehnika je znana kot Zbiranje odpadkov.



Šteje se tudi kot program, ki pomaga pri samodejnem upravljanju pomnilnika. Kdaj se izvajajo na JVM, predmeti se ustvarijo na kopici, ki je pravzaprav del pomnilnika, ki je namenjen programu. Sčasoma nekateri predmeti ne bodo več potrebni. The zbiralec smeti najde te neuporabljene predmete in jih izbriše, da sprosti nekaj pomnilnika.

  • Programi, ki ne dodelijo pomnilnika, se lahko sčasoma pokvarijo, ko v sistemu ni več prostora za razporeditev. Vsi ti programi naj bi puščali pomnilnik.
  • Zbiranje smeti v Javi se samodejno zgodi v življenjski dobi programa, tako da ni treba razdeljevati pomnilnika in se tako izogibati puščanju pomnilnika.
  • Metode kot prost() v C in izbriši () v C ++ se uporabljajo, v Javi pa se izvaja samodejno. Torej, zagotavlja boljše upravljanje pomnilnika.

Zdaj pa poglejmo, kako deluje samodejno zbiranje smeti v Javi.

Opomba : Predmet naj bi bil primeren za odvoz smeti, če ni dosegljiv.



Kako deluje Odvoz smeti?

Zbiranje smeti je postopek dela s Heap spominom in tudi oznaka ali prepoznajte nedosegljive predmete in jih z zbijanjem uničite.

Zbiranje smeti v Javi je samodejen postopek in programerju ni treba izrecno označiti predmetov, ki jih je treba izbrisati. Izvedba večinoma živi v . Vsak JVM lahko izvaja zbiranje smeti. Edina zahteva je, da mora ustrezati specifikaciji JVM.

Čeprav je na voljo veliko JVM, Oracle HotSpot je daleč najpogostejši, saj ponuja robusten in zrel nabor možnosti odvoza smeti.

  • HotSpot ima več zbiralnikov smeti, ki so optimizirani za različne primere uporabe, vsi zbiralniki smeti pa uporabljajo isti osnovni postopek.
  • V prvem koraku nepremični predmeti so označeni in označeni kot pripravljeni za odvoz smeti.
  • V drugem koraku se označeni predmeti izbrišejo. Po želji lahko pomnilnik stisnete, potem ko zbiralec smeti izbriše predmete, tako da so preostali predmeti v sosednjem bloku na začetku kupa. Postopek zbijanja olajša dodeljevanje pomnilnika novim predmetom zaporedoma po bloku pomnilnika, dodeljenem obstoječim predmetom.

Vsi zbiralci smeti HotSpot izvajajo generacijsko strategijo zbiranja, ki predmete razvršča po starosti. Utemeljitev generacijskega odvoza smeti je, da je večina predmetov kratkotrajna in bodo kmalu po nastanku pripravljeni na odvoz smeti.

Zdaj pa poglejmo, katere so različne vrste zbiralcev smeti.

kako uporabljati pooblastila v javi -

Vrste zbiralca smeti

JVM ponuja štiri različne zbiralnike smeti, ki so vsi generacijski. Vsak ima svoje prednosti in omejitve. Izbira zbiralca smeti je odvisna od uporabnika, pri prekinitvah pretoka in aplikacij pa lahko pride do številnih razlik.

Obstajajo namreč 4 vrste zbiralnikov smeti.

  • Serijski zbiralnik smeti (GC) :Vsi dogodki odvoza smeti serijsko potekajo v eni sami niti. Zbijanje se izvede po vsakem odvozu smeti.
  • Vzporedni / pretočni GC: Za zbiranje manjših / manjših smeti se uporablja več niti. Ena nit se uporablja za večje zbiranje smeti in zbijanje stare generacije. Tudi različica Parallel uporablja več niti za večje zbiranje smeti in zbijanje stare generacije.
  • Zbiralnik CMS :Za nabiranje manjših / manjših smeti se uporablja več niti z istim algoritmom kot Parallel. Večina zbiranja smeti je večnitna, vendar se sistem za upravljanje vsebin izvaja hkrati s postopki aplikacij, da zmanjša dogodke v aplikaciji. Zbijanje se ne izvaja.
  • Zbiralec G1 :Ta zbiralnik smeti je v osnovi namenjen nadomestitvi sistema za upravljanje vsebin. Je vzporeden in sočasen kot CMS, vendar deluje povsem drugače, če ga primerjamo s starejšimi zbiralci smeti.

Razumejmo prednosti zbiranja smeti v Javi.

Prednosti

  • Največja prednost zbiranja smeti Java je ta, da se samodejno obravnava brisanje neuporabljenih predmetov ali nekaterih predmetov, ki so nedostopni za sprostitev pomnilniških virov.
  • Zbiranje smeti je zdaj nova standardna komponenta mnogih priljubljenih programskih jezikov.
  • Zaradi tega je pomnilnik Java učinkovit. To je zato, ker zbiralec smeti odstrani neskladne predmete iz pomnilnika kupa.
  • je samodejno končano z zbiralnikom smeti, ki je del JVM.

Najboljše prakse

Najboljši pristop za prilagajanje zbiranju smeti Java je nastavitev zastavic na JVM. Zastave imajo možnost prilagoditve zbiralnika smeti, ki se bo uporabljal. Pomaga, da je najprimernejši za obdelavo v ozadju, kjer so sprejemljivi dolgi premori za zbiranje smeti.

Tu je treba omeniti še to, da je zbiralnik smeti CMS zasnovan tako, da zmanjša premore, zaradi česar je idealen za GUI aplikacije, kjer je odzivnost zelo pomembna. Dodatno natančno uravnavanje je mogoče doseči s spreminjanjem velikosti kupa ali njegovih delov in merjenjem učinkovitosti zbiranja smeti.

Oglejmo si ta program.

class Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Vrednost 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 ()}}

V tem primeru dvaustvarijo se predmeti in dve referenčni spremenljivki. Če dodate še en ukaz e3 = Null,dve referenčni spremenljivki bosta usmerjeni na isti objekt. In če na spremenljivko ni sklica, e3 = e2e3.showData () Na tej točki ni nobenih referenc, ki bi kazale na predmet in postane primeren za odvoz smeti.

S tem smo na koncu tega članka »Zbiranje smeti v Javi«. Naučili smo se, kako odstraniti neuporabljene predmete na kupu in različne vrste zbirk.

Če ste našli ta članek o »Zbiranju smeti v Javi«, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, razširjenih po vsem svetu. Tu smo, da vam pomagamo pri vsakem koraku na poti, pripravili smo učni načrt, ki je zasnovan za študente in strokovnjake, ki želijo biti razvijalec Java.

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje tega »Zbiranje smeti v Javi ' in se vam bomo javili v najkrajšem možnem času.