Affaldssamling i Java: Alt hvad du behøver at vide



Denne artikel om skraldsamling i Java giver dig en klar idé om, hvordan det fungerer, dets typer og forskellige metoder under skraldindsamling i Java

er et almindeligt programmeringssprog, og hvis du i tilfælde af en situation, hvor der er ubrugte data i dit program, og du ikke ved, hvordan du skal håndtere det, kommer Garbage Collection i Java til nytte. Så jeg skriver denne artikel for at hjælpe dig med håndtering af disse funktioner.

Jeg dækker emnerne i følgende rækkefølge:





Lad os komme igang!

Hvad er affaldssamling i Java?

I Java står programmører over for spørgsmålet om at skulle ødelægge genstande der er ude af brug. Men med affaldssamleren kan dette let håndteres. Hovedformålet med denne affaldssamler er at frigøre bunkehukommelse ved at ødelægge objekterne ikke indeholder en reference. Teknikken er kendt som Dagrenovation.



Det betragtes også som et program, der hjælper med at udføre automatisk hukommelsesstyring. Hvornår køres på JVM, oprettes objekter på bunken, som faktisk er en del af hukommelsen, der er dedikeret til programmet. Til sidst vil nogle objekter ikke længere være nødvendige. Det skraldemand finder disse ubrugte objekter og sletter dem for at frigøre noget hukommelse.

ms sql tutorials til begyndere
  • Programmer, der ikke allokerer hukommelse, kan i sidste ende gå i stykker, når der ikke er hukommelse tilbage i systemet at allokere. Alle disse programmer siges at have hukommelseslækage.
  • Affaldssamling i Java sker automatisk i løbet af et program, hvilket eliminerer nødvendigheden af ​​at allokere hukommelse og undgår derfor hukommelseslækage.
  • Metoder som gratis() i C og slet () i C ++ bruges, men i Java udføres det automatisk. Så, giver bedre hukommelsesstyring.

Lad os nu forstå, hvordan denne automatiske affaldssamling fungerer i Java.

Bemærk : Et objekt siges at være berettiget til affaldsindsamling, hvis det ikke kan nås.



Hvordan fungerer affaldssamling?

Affaldssamling er en proces med at arbejde med Heap-hukommelsen og også mærke eller identificer de uopnåelige genstande og ødelæg dem med komprimering.

Affaldssamling i Java er en automatisk proces, og programmøren behøver ikke eksplicit at markere objekter, der skal slettes. Implementeringen lever primært i . Hver JVM kan implementere affaldsindsamling. Det eneste krav er, at det skal opfylde JVM-specifikationen.

Selvom der er mange JVM'er tilgængelige, Oracle's HotSpot er langt den mest almindelige, da den tilbyder et robust og modent sæt af skraldopsamlingsmuligheder.

  • HotSpot har flere affaldssamlere, der er optimeret til forskellige brugssager, og alle affaldssamlere følger den samme grundlæggende proces.
  • I det allerførste trin, uhenviste genstande identificeres og markeres som klar til affaldsindsamling.
  • I det andet trin slettes de markerede objekter. Valgfrit kan hukommelse komprimeres, når affaldssamleren sletter objekter, så de resterende objekter er i en sammenhængende blok i starten af ​​bunken. Komprimeringsprocessen gør det lettere at allokere hukommelse til nye objekter sekventielt efter hukommelsesblokken allokeret til eksisterende objekter.

Alle HotSpots affaldssamlere implementerer en generationsindsamlingsstrategi, der kategoriserer objekter efter alder. Begrundelsen bag generationens affaldsindsamling er, at de fleste genstande er kortvarige og vil være klar til affaldsindsamling kort efter oprettelsen.

Lad os nu se, hvad der er de forskellige typer affaldssamlere.

Typer af affaldssamler

JVM leverer fire forskellige affaldssamlere, som alle er generationsskifte. Hver enkelt har sine egne fordele og begrænsninger. Valget af hvilken affaldssamler, der skal bruges, ligger hos brugeren, og der kan være adskillige forskelle i kapaciteten og applikationspauserne.

Der er nemlig 4 typer affaldssamlere.

  • Serial Garbage Collector (GC) :Alle skraldindsamlingsbegivenheder gennemføres serielt i en enkelt tråd. Komprimering udføres efter hver affaldssamling.
  • Parallel / gennemstrømning GC: Flere tråde bruges til mindre / mindre affaldsindsamling. En enkelt tråd bruges til større affaldsindsamling og komprimering af den gamle generation. Parallelvarianten bruger også flere tråde til større affaldssamling og komprimering af den gamle generation.
  • CMS-samler :Flere tråde bruges til indsamling af mindre / mindre affald ved hjælp af den samme algoritme som Parallel. Størstedelen af ​​affaldssamlingen er multi-threaded, men CMS kører samtidigt sammen med applikationsprocesserne for at minimere applikationshændelser. Ingen komprimering udføres.
  • G1 Collector :Denne affaldssamler er grundlæggende beregnet som erstatning for CMS. Det er parallelt og samtidig som CMS, men det fungerer helt anderledes, når det sammenlignes med de ældre affaldssamlere.

Lad os forstå fordelene ved Garbage-indsamling i Java.

Fordele

  • Den største fordel ved Java skraldindsamling er, at den automatisk håndterer sletningen af ubrugte objekter eller nogle objekter, der er utilgængelige for at frigøre hukommelsesressourcer.
  • Garbage Collection er nu en ny standardkomponent i mange populære programmeringssprog.
  • Det gør Java-hukommelseseffektiv. Det er fordi affaldssamleren fjerner de ikke-henviste genstande fra bunkehukommelsen.
  • det er automatisk udført af affaldssamleren, som er en del af JVM.

Bedste praksis

Den bedste tilgang til at tilpasse sig Java-affaldssamling er ved at sætte flag på JVM. Flag har evnen til at justere den affaldssamler, der skal bruges. Det hjælper med at gøre det bedst egnet til forarbejdning af backend, hvor lange pauser til affaldsopsamling er acceptable.

En anden ting at bemærke her er, at CMS-affaldssamleren er designet til at minimere pauser, hvilket gør den ideel til GUI-applikationer, hvor lydhørhed er meget vigtig. Yderligere finjustering kan opnås ved at ændre dyngens størrelse eller dens sektioner og måle affaldsindsamlingseffektiviteten.

Lad os se på dette program.

klasse 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 dette tilfælde er de toobjekter og to referencevariabler oprettes. Hvis du tilføjer en anden kommando e3 = Null,to referencevariabler peger på det samme objekt. Og hvis der ikke er nogen henvisning til variablen, e3 = e2e3.showData () På dette tidspunkt er der ingen referencer, der peger på objektet, og det bliver kvalificeret til affaldsindsamling.

Dette bringer os til slutningen af ​​denne 'Garbage Collection in Java' artikel. Vi har lært, hvordan man fjerner ubrugte objekter i bunken og de forskellige typer samling.

Hvis du fandt denne artikel om 'Garbage Collection in Java', skal du tjekke af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Vi er her for at hjælpe dig med hvert trin på din rejse, vi kommer med en læseplan, der er designet til studerende og fagfolk, der ønsker at være en Java-udvikler.

Har du et spørgsmål til os? Nævn det i kommentarfeltet i denne “Garbage Collection in Java ' og vi vender tilbage til dig hurtigst muligt.