Szemétgyűjtés Java-ban: Mindössze annyit kell tudnia



Ez a cikk a Java szemétgyűjtéséről világos áttekintést ad a működéséről, típusairól és különböző módszereiről a Java szemétgyűjtése alatt.

egy általános célú programozási nyelv, és ha olyan helyzetbe kerül, hogy a programjában fel nem használt adatok vannak, és nem tudja, hogyan kell kezelni, akkor a Java szemétgyűjtemény jól jön. Szóval, azért írom ezt a cikket, hogy segítsek neked e funkciók kezelésében.

A témákat a következő sorrendben tárgyalom:





Lássunk neki!

Mi a szemétgyűjtés a Java-ban?

A Java-ban a programozók azzal szembesülnek, hogy meg kell semmisíteni a tárgyakat amelyek nincsenek használatban. De a Szemétgyűjtővel ez könnyen megoldható. A szemétgyűjtő fő célja a halom memória felszabadítása az objektumok megsemmisítésével, amelyek nem tartalmaznak hivatkozást. A technika ismert Szemétgyüjtés.



Ugyancsak programnak tekintik, amely segíti az automatikus memóriakezelést. Mikor a JVM-en futnak, az objektumok a kupacon jönnek létre, amely valójában a programnak szentelt memória egy része. Végül néhány tárgyra már nincs szükség. Az szemetes megtalálja ezeket a fel nem használt tárgyakat, és törli őket, hogy felszabadítson egy memóriát.

  • Azok a programok, amelyek nem szüntetik meg a memória lefoglalását, végül megszakadhatnak, ha a rendszerben nem marad memória a lefoglalásra. Ezek a programok állítólag memóriaszivárognak.
  • A Java-ban a szemétgyűjtés automatikusan megtörténik a program élettartama alatt, kiküszöbölve a memória kiosztásának szükségességét, és ezzel elkerülve a memória szivárgását.
  • Olyan módszerek, mint ingyenes() C-ben és töröl() a C ++ nyelven használják, de Java-ban automatikusan végrehajtják. Így, jobb memóriakezelést biztosít.

Most értsük meg, hogyan működik ez az automatikus szemétszállítás Java-ban.

jegyzet : Azt mondják, hogy egy objektum alkalmas a szemétszállításra, ha elérhetetlen.



különbség a túlterhelés és az felülbírálás között a java-ban

Hogyan működik a Szemétgyűjtés?

A szemétgyűjtés a Halom memóriával való együttműködés folyamata Mark vagy azonosítsa az elérhetetlen tárgyakat és tömörítéssel megsemmisítse azokat.

A Java szemétgyűjtése automatikus folyamat, és a programozónak nem kell kifejezetten megjelölnie a törölni kívánt objektumokat. A megvalósítás főként a . Minden JVM megvalósíthatja a szemétszállítást. Az egyetlen követelmény az, hogy meg kell felelnie a JVM specifikációinak.

Annak ellenére, hogy sok JVM áll rendelkezésre, Az Oracle-é Csatlakozási pont messze a legelterjedtebb, mivel robusztus és kiforrott szemétszállítási lehetőségeket kínál.

  • A HotSpot-nak több olyan szemétgyűjtője van, amelyek különféle felhasználási esetekre vannak optimalizálva, és az összes hulladékgyűjtő ugyanazt az alapvető folyamatot követi.
  • A legelső lépésben hivatkozatlan tárgyak azonosítják és szemétszállításra késznek jelölik.
  • A második lépésben a megjelölt objektumok törlődnek. Opcionálisan a memória tömöríthető azután, hogy a szemétszedő objektumokat töröl, így a fennmaradó objektumok egy összefüggő blokkban vannak a kupac elején. A tömörítési folyamat megkönnyíti a memória egymás utáni kiosztását a meglévő objektumokhoz rendelt memória blokk után.

A HotSpot összes szemétgyűjtője generációs gyűjtési stratégiát valósít meg, amely az objektumokat életkor szerint kategorizálja. A generációs szemétszállítás mögött az áll, hogy a legtöbb objektum rövid életű, és hamarosan készen áll a szemétszállításra.

Most nézzük meg, melyek a különböző típusú hulladékgyűjtők.

A szemétgyűjtő típusai

A JVM négy különböző hulladékgyűjtőt biztosít, mindegyik generációs. Mindegyiknek megvannak a maga előnyei és korlátai. A felhasználó választása, hogy melyik szemétszedőt használja, számos különbség lehet az átviteli sebesség és az alkalmazás szüneteiben.

Négyféle szemétgyűjtő van.

  • Soros szemétgyűjtő (GC) :Az összes szemétszállítási esemény sorozatosan, egyetlen szálon zajlik. A tömörítést minden szemétszállítás után végrehajtják.
  • Párhuzamos / átviteli GC: A kisebb / kisebb szemétszállításhoz több szálat használnak. Egyetlen szálat használnak a nagyobb szemétszállításhoz és az Old Generation tömörítéséhez. Ezenkívül a Párhuzamos változat több szálat használ a nagyobb szemétszállításhoz és az Old Generation tömörítéséhez.
  • CMS Collector :Több szálat használnak a kis / kisebb szemétszállításhoz, ugyanazzal az algoritmussal, mint a Parallel. A szemétszállítás többsége több szálból áll, de a CMS egyidejűleg fut az alkalmazás folyamataival az alkalmazás eseményeinek minimalizálása érdekében. Tömörítést nem végeznek.
  • G1 Gyűjtő :Ez a szemétgyűjtő alapvetően a CMS helyettesítésére szolgál. Párhuzamos és párhuzamos, mint a CMS, de egészen másképp működik, ha összehasonlítjuk a régebbi hulladékgyűjtőkkel.

Értsük meg a Java szemétgyűjtésének előnyeit.

Előnyök

  • A Java szemétgyűjtés legnagyobb előnye, hogy automatikusan kezeli a törlést fel nem használt objektumokból vagy olyan objektumokból, amelyek elérhetetlenek a memóriaforrások felszabadításához.
  • A Garbage Collection ma már számos népszerű programnyelv új standard eleme.
  • Ez teszi a Java memória-hatékony. Ennek oka, hogy a szemétgyűjtő eltávolítja a hivatkozatlan objektumokat a halom memóriájából.
  • Ez automatikusan kész a JVM részét képező szemétszedő.

Legjobb gyakorlatok

A Java szemétgyűjtéshez való alkalmazkodás legjobb módja a zászlók beállítása a JVM-en. A zászlók képesek beállítani a használt szemétgyűjtőt. Segít abban, hogy a legalkalmasabb legyen háttér-feldolgozásra, ahol a szemétszedés hosszú szünetei elfogadhatók.

Egy másik dolog, amit meg kell jegyezni, hogy a CMS szemétgyűjtőt úgy tervezték, hogy minimalizálja a szüneteket, így ideális GUI alkalmazásokhoz, ahol a reakciókészség nagyon fontos. További finomhangolás érhető el a kupac vagy szakaszainak méretének megváltoztatásával és a szemétszállítás hatékonyságának mérésével.

Vessünk egy pillantást erre a programra.

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

Ebben az esetben a kettőobjektumok és két referencia változó jön létre. Ha újabb parancsot ad hozzá e3 = Null,két referencia változó ugyanarra az objektumra mutat. Ha pedig nincs hivatkozás a változóra, akkor e3 = e2e3.showData () Ezen a ponton nincsenek utalások az objektumra, és jogosulttá válik szemétgyűjtésre.

Ezzel eljutottunk ennek a ’Garbage Collection in Java’ cikknek a végére. Megtanultuk, hogyan távolítsuk el a fel nem használt tárgyakat a kupacban és a különféle gyűjteményeket.

Ha megtalálta ezt a cikket a „Java szemétgyűjtésről”, akkor nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Azért vagyunk itt, hogy segítséget nyújthassunk utazásának minden lépésében, és kitalálunk egy tananyagot, amelyet olyan hallgatók és szakemberek számára tervezünk, akik Java fejlesztők szeretnének lenni.

Van egy kérdésünk? Kérjük, említse meg ennek a „Garbage Collection in Java ' és a lehető leghamarabb kapcsolatba lépünk Önnel.

aktív és passzív átalakulás az informatikában