Garbage Collection i Java: Allt du behöver veta



Den här artikeln om Garbage collection i Java ger dig en tydlig uppfattning om hur det fungerar, dess typer och olika metoder under skräpsamling i Java

är ett allmänt programmeringsspråk och om du skulle komma i en situation där det finns oanvända data i ditt program och du inte vet hur du hanterar det, kommer Garbage Collection i Java till nytta. Så jag skriver den här artikeln för att hjälpa dig att hantera dessa funktioner.

Jag kommer att behandla ämnena i följande ordning:





Låt oss börja!

Vad är Garbage Collection i Java?

I Java står programmerare inför problemet med att behöva förstöra objekt som är ur bruk. Men med Garbage Collector kan detta lätt tas om hand. Huvudsyftet med denna Garbage Collector är att frigöra heapminne genom att förstöra objekten inte innehåller en referens. Tekniken är känd som Skräp samling.



Det betraktas också som ett program som hjälper till att utföra automatisk minneshantering. När körs på JVM, skapas objekt på högen, vilket faktiskt är en del minne som är tillägnad programmet. Så småningom kommer vissa objekt inte längre att behövas. De skräp samlare hittar dessa oanvända objekt och tar bort dem för att frigöra lite minne.

  • Program som inte avdelar minne kan så småningom gå sönder när det inte finns något minne kvar i systemet att allokera. Alla dessa program sägs ha minnesläckor.
  • Avfallssamling i Java sker automatiskt under programmets livstid, vilket eliminerar behovet av att avdela minne och undviker därför minnesläckor.
  • Metoder som fri() i C och radera() i C ++ används men i Java utförs det automatiskt. Så, ger bättre minneshantering.

Låt oss nu förstå hur den här automatiska skräpsamlingen fungerar i Java.

komma igång med visuell studio

Notera : Ett objekt sägs vara kvalificerat för sopuppsamling om det inte kan nås.



Hur fungerar Garbage Collection?

Garbage Collection är en process för att arbeta med Heap-minnet och också märke eller identifiera de oåtkomliga föremålen och förstör dem med komprimering.

Avfallssamling i Java är en automatisk process och programmeraren behöver inte uttryckligen markera objekt som ska raderas. Genomförandet lever huvudsakligen i . Varje JVM kan implementera skräpsamling. Det enda kravet är att det ska uppfylla JVM-specifikationen.

Även om det finns många JVM: er tillgängliga, Oracle's HotSpot är den överlägset vanligaste eftersom den erbjuder en robust och mogen uppsättning av skräpuppsamlingsalternativ.

  • HotSpot har flera sopuppsamlare som är optimerade för olika användningsfall, och alla sopuppsamlare följer samma grundläggande process.
  • I det allra första steget, obestämda föremål identifieras och markeras som redo för sopuppsamling.
  • I det andra steget raderas de markerade objekten. Valfritt kan minnet komprimeras efter att sopuppsamlaren har raderat objekt, så återstående föremål är i ett sammanhängande block i början av högen. Komprimeringsprocessen gör det lättare att allokera minne till nya objekt sekventiellt efter minnesblocket som tilldelats befintliga objekt.

Alla HotSpots sopsamlare implementerar en generationens insamlingsstrategi som kategoriserar objekt efter ålder. Motiveringen bakom generationens skräpsamling är att de flesta föremål är kortlivade och kommer att vara redo för skräpsamling strax efter skapandet.

Låt oss nu se vilka olika typer av sopsamlare som finns.

Typer av sopor

JVM tillhandahåller fyra olika sopsamlare, alla generationer. Var och en har sina egna fördelar och begränsningar. Valet av vilken sopuppsamlare som ska användas ligger hos användaren och det kan finnas många skillnader i genomströmnings- och applikationspauserna.

Det finns nämligen 4 typer av sopor.

hur man använder java iterator
  • Serial Garbage Collector (GC) :Alla händelser för skräpsamling genomförs seriellt i en enda tråd. Komprimering utförs efter varje sopuppsamling.
  • Parallell / genomströmning GC: Flera trådar används för mindre / mindre sopuppsamling. En enda tråd används för större sopuppsamling och packning av gamla generationer. Parallellvarianten använder också flera trådar för större skräpsamling och komprimering av gamla generationer.
  • CMS-samlare :Flera trådar används för små / mindre sopor med samma algoritm som Parallel. Majoriteten av skräpsamlingen är flertrådad, men CMS körs samtidigt tillsammans med applikationsprocesserna för att minimera applikationshändelser. Ingen komprimering utförs.
  • G1-samlare :Denna sopuppsamlare är i grunden avsedd som en ersättning för CMS. Det är parallellt och samtidigt som CMS, men det fungerar helt annorlunda när det jämförs med de äldre sopuppsamlarna.

Låt oss förstå fördelarna med Garbage collection i Java.

Fördelar

  • Den största fördelen med Java-skräpsamling är att den automatiskt hanterar borttagningen av oanvända föremål eller några objekt som är oåtkomliga för att frigöra minnesresurser.
  • Garbage Collection är nu en ny standardkomponent i många populära programmeringsspråk.
  • Det gör Java-minne-effektivt. Det beror på att sopuppsamlaren tar bort de icke refererade föremålen från högminnet.
  • Det är automatiskt gjort av sopuppsamlaren som är en del av JVM.

Bästa praxis

Det bästa sättet att anpassa sig till Java-skräpsamlingen är att sätta flaggor på JVM. Flaggor har förmågan att justera sopuppsamlaren som ska användas. Det hjälper till att göra den bäst lämpad för bearbetning av backend där långa pauser för sopuppsamling är acceptabla.

En annan sak att notera här är att CMS-sopuppsamlaren är utformad för att minimera pauser vilket gör den idealisk för GUI-applikationer där respons är mycket viktigt. Ytterligare finjustering kan åstadkommas genom att ändra storleken på högen eller dess sektioner och mäta effektiviteten för insamling av skräp.

Låt oss ta en titt på det här programmet.

klass 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 ()}}

I det här fallet, de tvåobjekt och två referensvariabler skapas. Om du lägger till ett annat kommando e3 = Null,två referensvariabler pekar på samma objekt. Och om det inte finns någon hänvisning till variabeln, e3 = e2e3.showData () Vid den här tiden finns det inga referenser som pekar på objektet och det blir kvalificerat för skräpsamling.

c ++ sorteringsfunktion

Detta leder oss till slutet av denna artikel om 'Garbage Collection in Java'. Vi har lärt oss hur man tar bort oanvända föremål i högen och olika typer av insamling.

Om du hittade den här artikeln om ”Garbage Collection in Java”, kolla in av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Vi är här för att hjälpa dig med varje steg på din resa, vi kommer med en läroplan som är utformad för studenter och yrkesverksamma som vill vara Java-utvecklare.

Har du en fråga till oss? Vänligen nämn det i kommentarsektionen i denna “Garbage Collection in Java ' så återkommer vi så snart som möjligt.