Garbage Collection in Java: alles wat u moet weten



Dit artikel over Garbage collection in Java geeft u een duidelijk idee over hoe het werkt, de typen en verschillende methoden onder garbage collection in Java

is een programmeertaal voor algemene doeleinden en als u een situatie tegenkomt waarin er ongebruikte gegevens in uw programma staan ​​en u niet weet hoe u ermee om moet gaan, komt Garbage Collection in Java van pas. Dus ik schrijf dit artikel om u te helpen bij het gebruik van deze functies.

Ik behandel de onderwerpen in de volgende volgorde:





ms sql-tutorials voor beginners

Laten we beginnen!

Wat is Garbage Collection in Java?

In Java worden programmeurs geconfronteerd met het probleem dat ze het voorwerpen die buiten gebruik zijn. Maar met de Garbage Collector kan dit eenvoudig worden geregeld. Het hoofddoel van deze Garbage Collector is om geheugenruimte vrij te maken door de objecten te vernietigen die geen referentie bevatten. De techniek staat bekend als Garbage Collection.



Het wordt ook beschouwd als een programma dat helpt bij het uitvoeren van automatisch geheugenbeheer. Wanneer worden uitgevoerd op de JVM, worden objecten op de heap gemaakt, wat eigenlijk een gedeelte van het geheugen is dat aan het programma is toegewezen. Uiteindelijk zijn sommige objecten niet meer nodig. De vuilnisman vindt deze ongebruikte objecten en verwijdert ze om geheugen vrij te maken.

  • Programma's die geen geheugen vrijmaken, kunnen uiteindelijk kapot gaan als er geen geheugen meer in het systeem is om toe te wijzen. Al deze programma's zouden geheugenlekken hebben.
  • Garbage collection in Java gebeurt automatisch tijdens de levensduur van een programma, waardoor de noodzaak om geheugen vrij te geven wordt geëlimineerd en geheugenlekken worden vermeden.
  • Methoden zoals vrij() in C en verwijderen () in C ++ worden gebruikt, maar in Java wordt het automatisch uitgevoerd. Zo, biedt een beter geheugenbeheer.

Laten we nu eens kijken hoe deze automatische garbagecollection werkt in Java.

Opmerking : Een object komt in aanmerking voor garbage collection als het onbereikbaar is.



Hoe werkt Garbage Collection?

Garbage Collection is een proces van werken met het Heap-geheugen en ook Mark of identificeer de onbereikbare objecten en vernietig ze met verdichting.

Garbage collection in Java is een automatisch proces en de programmeur hoeft objecten niet expliciet te markeren om te verwijderen. De implementatie leeft voornamelijk in de . Elke JVM kan garbage collection implementeren. De enige vereiste is dat het moet voldoen aan de JVM-specificatie.

Ook al zijn er veel JVM's beschikbaar, Oracle's HotSpot is verreweg de meest voorkomende omdat het een robuuste en volwassen reeks opties voor afvalinzameling biedt.

  • De HotSpot heeft verschillende garbage collectors die zijn geoptimaliseerd voor verschillende use cases, en alle garbage collectors volgen hetzelfde basisproces.
  • In de allereerste stap, objecten zonder verwijzing worden geïdentificeerd en gemarkeerd als gereed voor garbagecollection.
  • In de tweede stap worden de gemarkeerde objecten verwijderd. Optioneel kan het geheugen worden gecomprimeerd nadat de garbage collector objecten heeft verwijderd, zodat de resterende objecten zich in een aaneengesloten blok aan het begin van de heap bevinden. Het verdichtingsproces maakt het gemakkelijker om geheugen achtereenvolgens aan nieuwe objecten toe te wijzen nadat het geheugenblok aan bestaande objecten is toegewezen.

Alle garbage collectors van HotSpot implementeren een strategie voor het verzamelen van generaties die objecten categoriseert op leeftijd. De grondgedachte achter de garbagecollection van de generaties is dat de meeste objecten van korte duur zijn en kort na de creatie gereed zijn voor garbagecollection.

Laten we nu eens kijken wat de verschillende soorten vuilnismannen zijn.

Soorten Garbage Collector

De JVM biedt vier verschillende garbage collectors, allemaal generaties. Elk heeft zijn eigen voordelen en beperkingen. De keuze van de te gebruiken garbage collector ligt bij de gebruiker en er kunnen talrijke verschillen zijn in de doorvoer en applicatiepauzes.

Er zijn namelijk 4 soorten vuilnismannen.

  • Seriële Garbage Collector (GC) :Alle garbage collection-evenementen worden serieel uitgevoerd in één enkele thread. Verdichting wordt uitgevoerd na elke garbagecollection.
  • Parallel / doorvoer GC: Er worden meerdere threads gebruikt voor het ophalen van kleine / kleine afval. Een enkele draad wordt gebruikt voor grote afvalinzameling en verdichting van de oude generatie. Ook gebruikt de parallelle variant meerdere threads voor grote garbagecollection en verdichting van de oude generatie.
  • CMS Collector :Meerdere threads worden gebruikt voor kleine / kleine garbagecollection met hetzelfde algoritme als Parallel. De meerderheid van de garbage collection is multi-threaded, maar CMS werkt gelijktijdig met de applicatieprocessen om applicatiegebeurtenissen te minimaliseren. Er wordt geen verdichting uitgevoerd.
  • G1-verzamelaar :Deze garbage collector is eigenlijk bedoeld als vervanging voor CMS. Het is parallel en gelijktijdig zoals CMS, maar het werkt heel anders in vergelijking met de oudere garbage collectors.

Laten we eens kijken naar de voordelen van Garbage collection in Java.

Voordelen

  • Het grootste voordeel van Java garbage collection is dat het automatisch behandelt de verwijdering van ongebruikte objecten of sommige objecten die niet toegankelijk zijn om geheugenbronnen vrij te maken.
  • Garbage Collection is nu een nieuw standaardonderdeel van veel populaire programmeertalen.
  • Het maakt Java-geheugen-efficiënt. Het is omdat de garbage collector de objecten zonder verwijzing uit het heap-geheugen verwijdert.
  • Het is automatisch gedaan door de garbage collector die deel uitmaakt van JVM.

Beste praktijken

De beste benadering om u aan te passen aan Java-garbagecollection is door vlaggen in te stellen op de JVM. Vlaggen hebben de mogelijkheid om de te gebruiken garbage collector aan te passen. Het helpt om het het meest geschikt te maken voor backend-verwerking waar lange pauzes voor garbage collection acceptabel zijn.

Een ander ding om hier op te merken is dat de CMS-garbagecollector is ontworpen om pauzes te minimaliseren, waardoor het ideaal is voor GUI-toepassingen waarbij reactievermogen zeer belangrijk is. Extra fijnafstelling kan worden bereikt door de grootte van de hoop of zijn secties te wijzigen en de efficiëntie van de afvalinzameling te meten.

Laten we dit programma eens bekijken.

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

In dit geval de tweeobjecten en twee referentievariabelen worden gemaakt. Als je nog een commando toevoegt e3 = Null,twee referentievariabelen verwijzen naar hetzelfde object. En als er geen verwijzing naar de variabele is, e3 = e2e3.showData () Op dit punt zijn er geen verwijzingen naar het object en komt het in aanmerking voor garbage collection.

Dit brengt ons bij het einde van dit ‘Garbage Collection in Java’ artikel. We hebben geleerd hoe we ongebruikte objecten uit de hoop en de verschillende soorten collecties kunnen verwijderen.

Als je dit artikel over 'Garbagecollection in Java' hebt gevonden, bekijk dan het door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. We zijn hier om je te helpen bij elke stap op je reis, we komen met een curriculum dat is ontworpen voor studenten en professionals die een Java-ontwikkelaar willen worden.

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van deze “Garbagecollection in Java ' en we nemen zo snel mogelijk contact met u op.