Garbage Collection in Java: Kaikki mitä sinun tarvitsee tietää



Tämä artikkeli Java-jätteiden keräyksestä antaa sinulle selkeän kuvan siitä, miten se toimii, sen tyypit ja erilaiset menetelmät Javan roskakeräyksessä

on yleiskäyttöinen ohjelmointikieli ja jos jos keksit tilanteen, jossa ohjelmassa on käyttämättömiä tietoja etkä tiedä miten käsitellä sitä, Javan roskakokoelma on kätevä. Joten kirjoitan tämän artikkelin auttamaan sinua näiden toimintojen käsittelyssä.

Käsittelen aiheita seuraavassa järjestyksessä:





Aloitetaan!

Mikä on Java-roskikokoelma?

Java-ohjelmoijat kohtaavat ongelman joutua tuhoamaan esineitä jotka ovat pois käytöstä. Mutta roskakorin avulla tämä voidaan hoitaa helposti. Tämän Garbage Collectorin päätavoitteena on vapauttaa kasan muistia tuhoamalla esineitä, jotka eivät sisällä viitteitä. Tekniikka tunnetaan nimellä Roskakokoelma.



Sitä pidetään myös ohjelmana, joka auttaa suorittamaan automaattisen muistinhallinnan. Kun suoritetaan JVM: llä, objektit luodaan kasaan, joka on itse asiassa osa ohjelmalle omistettua muistia. Joitakin esineitä ei lopulta enää tarvita. roskankerääjä löytää nämä käyttämättömät esineet ja poistaa ne vapauttamaan muistia.

  • Ohjelmat, jotka eivät vapauta muistia, voivat lopulta rikkoutua, kun järjestelmässä ei ole jäljellä varaettavaa muistia. Kaikilla näillä ohjelmilla sanotaan olevan muistivuotoja.
  • Jätehuolto tapahtuu Java-ohjelmassa automaattisesti ohjelman elinkaaren aikana, mikä eliminoi tarpeen poistaa muistia ja välttää siten muistivuotoja.
  • Menetelmät, kuten vapaa() ryhmissä C ja poistaa() C ++: ssa käytetään, mutta Java: ssa se suoritetaan automaattisesti. Niin, tarjoaa paremman muistinhallinnan.

Ymmärretään nyt, kuinka tämä automaattinen roskien keräys toimii Javassa.

Huomautus : Esineen sanotaan olevan oikeutettu roskien keräämiseen, ellei se ole tavoitettavissa.



Kuinka roskien keräys toimii?

Garbage Collection on prosessi, joka toimii myös kasan muistin kanssa merkki tai tunnista tavoittamattomat kohteet ja tuhota ne tiivistämällä.

Java-jätteiden kerääminen on automaattinen prosessi, ja ohjelmoijan ei tarvitse erikseen merkitä poistettavia esineitä. Toteutus asuu pääasiassa . Jokainen JVM voi toteuttaa roskien keräyksen. Ainoa vaatimus on, että sen on täytettävä JVM-määritykset.

mikä skanneriluokan menetelmä lukee merkkijonon

Vaikka saatavilla on paljon JVM: itä, Oraclen HotSpot on ylivoimaisesti yleisin, koska se tarjoaa vankan ja kypsä joukko roskien keräysvaihtoehtoja.

  • HotSpotissa on useita roskien keräilijöitä, jotka on optimoitu erilaisiin käyttötarkoituksiin, ja kaikki roskien kerääjät noudattavat samaa perusprosessia.
  • Ensimmäisessä vaiheessa kohteet, joihin ei viitata on tunnistettu ja merkitty valmiiksi roskien keräämiseen.
  • Toisessa vaiheessa merkityt objektit poistetaan. Vaihtoehtoisesti muisti voidaan tiivistää sen jälkeen, kun roskien kerääjä poistaa objektit, joten jäljellä olevat objektit ovat vierekkäisessä lohkossa kasan alussa. Tiivistysprosessi helpottaa muistin varaamista uusille kohteille peräkkäin olemassa oleville kohteille osoitetun muistilohkon jälkeen.

Kaikki HotSpotin roskien keräilijät toteuttavat sukupolvien keräysstrategian, joka luokittelee objektit iän mukaan. Sukupolvien roskakorin taustalla on, että suurin osa esineistä on lyhytaikaisia ​​ja ovat valmiita roskien keräämiseen pian luomisen jälkeen.

Katsotaan nyt, mitkä ovat erilaisia ​​roskien keräilijöitä.

Tyypit roskien kerääjä

JVM: llä on neljä erilaista jätteiden keräilijää, ne kaikki sukupolvien välillä. Jokaisella on omat edut ja rajoitukset. Käyttäjän on valittava roskakorin valinta, ja suoritustehossa ja sovelluksen taukoissa voi olla lukuisia eroja.

Jätteiden kerääjiä on nimittäin 4 erilaista.

  • Sarjajätteen kerääjä (GC) :Kaikki roskien keräystapahtumat suoritetaan sarjassa yhdessä säikeessä. Tiivistys suoritetaan jokaisen roskakorin jälkeen.
  • Rinnakkais- / läpäisykykyinen GC: Useita lankoja käytetään pienten / pienten jätteiden keräykseen. Yhtä säiettä käytetään suurempaan roskakoriin ja Old Generation -tiivistykseen. Myös rinnakkaisvaihtoehto käyttää useita säikeitä suurempaan roskakoriin ja Old Generation -tiivistykseen.
  • CMS-keräilijä :Useita säikeitä käytetään pienten / pienten jätteiden keräykseen käyttäen samaa algoritmia kuin Parallel. Suurin osa roskakorista on monisäikeinen, mutta CMS toimii samanaikaisesti sovellusprosessien kanssa sovellustapahtumien minimoimiseksi. Tiivistystä ei suoriteta.
  • G1-keräilijä :Tämä roskien keräilijä on periaatteessa tarkoitettu korvaamaan CMS. Se on rinnakkainen ja samanaikainen kuin CMS, mutta se toimii aivan eri tavalla verrattuna vanhempiin roskien keräilijöihin.

Ymmärretään Javan roskakorin edut.

Edut

  • Java-roskakorin suurin etu on, että se automaattisesti käsittelee poistamista käyttämättömiä esineitä tai joitain esineitä, joihin ei pääse vapauttamaan muistiresursseja.
  • Garbage Collection on nyt uusi vakiokomponentti monille suosituille ohjelmointikielille.
  • Se tekee Java-muistista tehokkaan. Se johtuu siitä, että roskien keräilijä poistaa viittaamattomat objektit kasan muistista.
  • se on automaattisesti tehty JVM: n osana olevan roskakorin kautta.

Parhaat käytännöt

Paras tapa sopeutua Java-roskakoriin on asettaa liput JVM: ään. Lippuilla on mahdollisuus säätää käytettävää jätteenkerääjää. Se auttaa tekemään siitä parhaiten taustaprojektin, jossa pitkät tauot roskien keräyksessä ovat hyväksyttäviä.

Toinen huomioitava asia on, että CMS-roskienkeräin on suunniteltu vähentämään taukoja, mikä tekee siitä ihanteellisen GUI-sovelluksille, joissa reagointikyky on erittäin tärkeää. Lisähienosäätö voidaan suorittaa muuttamalla kasan tai sen osien kokoa ja mittaamalla roskien keräystehokkuus.

Katsotaanpa tätä ohjelmaa.

luokka Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('a =' + a: n arvo) System.out.println ('B: n arvo =' + 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 ()}}

Tässä tapauksessa nämä kaksiobjektit ja kaksi viitemuuttujaa luodaan. Jos lisäät toisen komennon e3 = Null,kaksi viitemuuttujaa osoittaa samaan objektiin. Ja jos muuttujaan ei ole viittausta, e3 = e2e3.showData () Tässä vaiheessa ei ole viitteitä, jotka osoittavat esineeseen, ja siitä tulee kelvollinen roskakoriin.

nukke vs kokki vs jenkins

Tämä vie meidät tämän ”Jarbage Collection in Java” -artikkelin loppuun. Olemme oppineet poistamaan käyttämättömät esineet kasasta ja erityyppiset kokoelmat.

Jos löysit tämän artikkelin ”Jarbage Collection in Java”, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Autamme sinua matkasi jokaisessa vaiheessa, keksimme opetussuunnitelman, joka on tarkoitettu opiskelijoille ja ammattilaisille, jotka haluavat olla Java-kehittäjiä.

Onko sinulla kysymys meille? Mainitse se tämän Java-roskakokoelman kommenttiosassa ' ja otamme sinuun yhteyttä mahdollisimman pian.