Skupljanje smeća na Javi: Sve što trebate znati

Ovaj članak o sakupljanju smeća na Javi daje vam jasnu ideju o tome kako to funkcionira, kakvi su tipovi i različite metode prikupljanja smeća na Javi

je programski jezik opće namjene i ako u slučaju da dođete do situacije da u vašem programu postoje neiskorišteni podaci i ne znate kako se nositi s njima, Zbirka smeća u Javi dobro dođe. Dakle, pišem ovaj članak da bih vam pomogao u rukovanju ovim funkcijama.

Obrađivat ću teme sljedećim redoslijedom:





Započnimo!

Što je prikupljanje smeća na Javi?

U Javi se programeri suočavaju s problemom da moraju uništiti predmeta koji su izvan upotrebe. No, sa Sakupljačem smeća to se lako može riješiti. Glavni cilj ovog Skupljača smeća je osloboditi hrpu memorije uništavanjem predmeta koji ne sadrže referencu. Tehnika je poznata kao Kolekcija smeća.



Također se smatra programom koji pomaže u automatskom upravljanju memorijom. Kada pokreću se na JVM-u, objekti se stvaraju na hrpi, što je zapravo dio memorije koja je posvećena programu. Na kraju, neki predmeti više neće biti potrebni. The sakupljač smeća pronalazi ove nekorištene predmete i briše ih kako bi oslobodio malo memorije.

  • Programi koji ne raspodjeljuju memoriju mogu se s vremenom prekinuti kada u sustavu više nema memorije za dodjelu. Kaže se da svi ti programi imaju curenje memorije.
  • Prikupljanje smeća u Javi događa se automatski za vrijeme trajanja programa, uklanjajući potrebu za raspodjelom memorije i izbjegavajući curenje memorije.
  • Metode poput besplatno() u C i izbrisati() u C ++ se koriste, ali se u Javi izvodi automatski. Tako, pruža bolje upravljanje memorijom.

Sada, shvatimo kako ovo automatsko sakupljanje smeća radi na Javi.

java parse string do danas

Bilješka : Za objekt se kaže da ispunjava uvjete za odvoz smeća ako je nedostupan.



Kako funkcionira Skupljanje smeća?

Skupljanje smeća je proces rada s Heap memorijom i također ocjena ili prepoznati nedostižne predmete i uništiti ih zbijanjem.

Prikupljanje smeća u Javi je automatski postupak i programer ne mora izričito označavati objekte koje treba izbrisati. Provedba uglavnom živi u . Svaki JVM može provesti prikupljanje smeća. Jedini uvjet je da treba udovoljavati JVM specifikaciji.

Iako postoji mnogo JVM-ova, Oracleova HotSpot je daleko najčešći jer nudi robustan i zreo skup mogućnosti odvoza smeća.

  • HotSpot ima nekoliko sakupljača smeća koji su optimizirani za različite slučajeve uporabe, a svi sakupljači smeća slijede isti osnovni postupak.
  • U prvom koraku, nereferencirani predmeti identificirani su i označeni kao spremni za odvoz smeća.
  • U drugom se koraku brišu označeni objekti. Po želji se memorija može sabiti nakon što sakupljač smeća izbriše objekte, tako da su preostali objekti u susjednom bloku na početku hrpe. Proces sabijanja olakšava dodjelu memorije novim objektima uzastopno nakon bloka memorije dodijeljenog postojećim objektima.

Svi HotSpotovi sakupljači smeća provode generacijsku strategiju prikupljanja koja kategorizira predmete prema dobi. Obrazloženje generacijskog odvoza smeća je da je većina predmeta kratkotrajna i da će biti spremni za odvoz smeća ubrzo nakon stvaranja.

Sada da vidimo koje su različite vrste sakupljača smeća.

Vrste sakupljača smeća

JVM nudi četiri različita sakupljača smeća, svi generacijski. Svaka ima svoje prednosti i ograničenja. Odabir koji će sakupljač smeća koristiti leži na korisniku i mogu postojati brojne razlike u protoku i pauzama aplikacija.

Postoje naime 4 vrste sakupljača smeća.

koja je razlika između c ++ i jave
  • Serijski sakupljač smeća (GC) :Svi događaji odvoza smeća odvijaju se serijski u jednoj niti. Sabijanje se izvodi nakon svakog odvoza smeća.
  • Paralelni / propusni GC: Višestruki niti koriste se za prikupljanje manjeg / malog smeća. Jedna nit koristi se za glavno sakupljanje smeća i zbijanje stare generacije. Također, paralelna varijanta koristi više niti za glavno sakupljanje smeća i zbijanje stare generacije.
  • Sakupljač CMS-a :Više se niti koristi za prikupljanje sitnog / manjeg smeća koristeći isti algoritam kao i Paralelno. Većina sakupljanja smeća je s više niti, ali CMS se izvodi istovremeno s procesima aplikacija kako bi se događaji u aplikaciji minimizirali. Ne vrši se sabijanje.
  • Sakupljač G1 :Ovaj skupljač smeća u osnovi je zamišljen kao zamjena za CMS. Paralelna je i istodobna poput CMS-a, ali djeluje sasvim drugačije kada se uspoređuje sa starijim sakupljačima smeća.

Razumijemo prednosti sakupljanja smeća u Javi.

Prednosti

  • Najveća je korist odvoženja smeća u Javau što se automatski obrađuje brisanje neiskorištenih objekata ili nekih objekata koji su nedostupni za oslobađanje memorijskih resursa.
  • Skupljanje smeća sada je nova standardna komponenta mnogih popularnih programskih jezika.
  • Čini Java memorijski učinkovitom. To je zato što sakupljač smeća uklanja nereferencirane predmete iz memorije hrpe.
  • to je automatski učinjeno sakupljačem smeća koji je dio JVM-a.

Najbolje prakse

Najbolji pristup prilagodbi prikupljanju smeća u Javi je postavljanjem zastavica na JVM-u. Zastave imaju mogućnost prilagodbe sakupljača smeća koji će se koristiti. Pomaže u tome da bude najprikladniji za pozadinsku obradu gdje su prihvatljive duge pauze za odvoz smeća.

Ovdje treba imati na umu da je CMS sakupljač smeća dizajniran da smanji pauze što ga čini idealnim za GUI aplikacije u kojima je odziv vrlo važan. Dodatno fino podešavanje može se postići promjenom veličine hrpe ili njezinih dijelova i mjerenjem učinkovitosti sakupljanja smeća.

Pogledajmo ovaj program.

klasa Edureka {int a int b javna praznina setData (int c, int d) {a = cb = d} javna praznina showData () {System.out.println ('Vrijednost a =' + a) System.out.println ('Vrijednost 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 ()}}

U ovom slučaju, to dvojestvaraju se objekti i dvije referentne varijable. Ako dodate još jednu naredbu e3 = Null,dvije referentne varijable ukazat će na isti objekt. A ako nema reference na varijablu, e3 = e2e3.showData () U ovom trenutku nema referenci koje upućuju na objekt i on postaje prihvatljiv za odvoz smeća.

c ++ fibonaccijeva rekurzija

To nas dovodi do kraja ovog članka ‘Prikupljanje smeća na Javi’. Naučili smo kako ukloniti neiskorištene predmete iz hrpe i različite vrste zbirki.

Ako ste pronašli ovaj članak o 'Sakupljanju smeća na Javi', pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Ovdje smo da vam pomognemo u svakom koraku na putovanju, osmislili smo nastavni plan i program koji je namijenjen studentima i profesionalcima koji žele biti programer Java.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog „Skupljanje smeća na Javi ' i javit ćemo vam se u najkraćem mogućem roku.