Garbage Collection in Java: Alles was Sie wissen müssen



Dieser Artikel über die Garbage Collection in Java gibt Ihnen eine klare Vorstellung davon, wie es funktioniert, welche Typen es gibt und welche Methoden unter Garbage Collection in Java angewendet werden

ist eine universelle Programmiersprache. Wenn Sie auf eine Situation stoßen, in der nicht verwendete Daten in Ihrem Programm vorhanden sind und Sie nicht wissen, wie Sie damit umgehen sollen, ist Garbage Collection in Java hilfreich. Ich schreibe diesen Artikel, um Ihnen bei der Handhabung dieser Funktionen zu helfen.

Ich werde die Themen in der folgenden Reihenfolge behandeln:





Lass uns anfangen!

Was ist Garbage Collection in Java?

In Java stehen Programmierer vor dem Problem, dass sie das zerstören müssen Objekte das sind außer Gebrauch. Mit dem Garbage Collector kann dies jedoch problemlos erledigt werden. Das Hauptziel dieses Garbage Collector besteht darin, Heapspeicher freizugeben, indem die Objekte zerstört werden, die keine Referenz enthalten. Die Technik ist bekannt als Müllabfuhr.



Es wird auch als Programm betrachtet, das bei der automatischen Speicherverwaltung hilft. Wann werden auf der JVM ausgeführt, werden Objekte auf dem Heap erstellt, der eigentlich ein Teil des Speichers ist, der dem Programm zugeordnet ist. Schließlich werden einige Objekte nicht mehr benötigt. Das Müllsammler findet diese nicht verwendeten Objekte und löscht sie, um Speicherplatz freizugeben.

  • Programme, die den Speicher nicht freigeben, können eventuell unterbrochen werden, wenn im System kein Speicher mehr zum Zuweisen vorhanden ist. Alle diese Programme sollen Speicherlecks haben.
  • Die Speicherbereinigung in Java erfolgt automatisch während der Lebensdauer eines Programms, wodurch die Notwendigkeit einer Speicherfreigabe entfällt und Speicherlecks vermieden werden.
  • Methoden wie kostenlos() in C und löschen() in C ++ werden verwendet, in Java wird es jedoch automatisch ausgeführt. So, Bietet eine bessere Speicherverwaltung.

Lassen Sie uns nun verstehen, wie diese automatische Speicherbereinigung in Java funktioniert.

Hinweis : Ein Objekt kann für die Speicherbereinigung in Frage kommen, wenn es nicht erreichbar ist.



Unterschied zwischen Überladen und Überschreiben in Java

Wie funktioniert die Garbage Collection?

Garbage Collection ist ein Prozess der Arbeit mit dem Heap-Speicher und auch Kennzeichen oder identifizieren Sie die nicht erreichbaren Objekte und zerstören Sie sie durch Verdichtung.

Die Speicherbereinigung in Java ist ein automatischer Prozess, und der Programmierer muss die zu löschenden Objekte nicht explizit markieren. Die Implementierung lebt hauptsächlich in der . Jede JVM kann die Speicherbereinigung implementieren. Die einzige Voraussetzung ist, dass es der JVM-Spezifikation entspricht.

Obwohl viele JVMs verfügbar sind, Oracle HotSpot ist bei weitem die häufigste, da es eine robuste und ausgereifte Reihe von Speicherbereinigungsoptionen bietet.

  • Der HotSpot verfügt über mehrere Garbage Collectors, die für verschiedene Anwendungsfälle optimiert sind, und alle Garbage Collectors folgen demselben grundlegenden Prozess.
  • Im allerersten Schritt nicht referenzierte Objekte werden identifiziert und als bereit für die Speicherbereinigung markiert.
  • Im zweiten Schritt werden die markierten Objekte gelöscht. Optional kann der Speicher komprimiert werden, nachdem der Garbage Collector Objekte gelöscht hat, sodass sich die verbleibenden Objekte zu Beginn des Heaps in einem zusammenhängenden Block befinden. Der Komprimierungsprozess erleichtert das sequentielle Zuweisen von Speicher zu neuen Objekten nach dem Speicherblock, der vorhandenen Objekten zugewiesen ist.

Alle Garbage Collectors von HotSpot implementieren eine Generationssammlungsstrategie, die Objekte nach Alter kategorisiert. Das Grundprinzip der generellen Garbage Collection ist, dass die meisten Objekte nur von kurzer Dauer sind und bald nach der Erstellung für die Garbage Collection bereit sind.

Nun wollen wir sehen, welche Arten von Müllsammlern es gibt.

Arten von Garbage Collector

Die JVM bietet vier verschiedene Garbage Collectors, die alle generationsübergreifend sind. Jeder hat seine eigenen Vor- und Nachteile. Die Wahl des zu verwendenden Garbage Collectors liegt beim Benutzer, und es kann zahlreiche Unterschiede in den Durchsatz- und Anwendungspausen geben.

Es gibt nämlich 4 Arten von Müllsammlern.

  • Serial Garbage Collector (GC) ::Alle Garbage Collection-Ereignisse werden seriell in einem einzigen Thread ausgeführt. Die Komprimierung wird nach jeder Speicherbereinigung ausgeführt.
  • Parallel- / Durchsatz-GC: Für die Sammlung kleiner / kleiner Speicherbereinigungen werden mehrere Threads verwendet. Ein einzelner Thread wird für die Speicherbereinigung und die Komprimierung der alten Generation verwendet. Außerdem verwendet die parallele Variante mehrere Threads für die Speicherbereinigung und die Komprimierung der alten Generation.
  • CMS Collector ::Für die kleine / kleine Speicherbereinigung werden mehrere Threads verwendet, wobei derselbe Algorithmus wie bei Parallel verwendet wird. Der Großteil der Speicherbereinigung erfolgt über mehrere Threads, CMS wird jedoch gleichzeitig mit den Anwendungsprozessen ausgeführt, um Anwendungsereignisse zu minimieren. Es wird keine Verdichtung durchgeführt.
  • G1 Sammler ::Dieser Garbage Collector ist grundsätzlich als Ersatz für CMS gedacht. Es ist parallel und gleichzeitig wie CMS, funktioniert aber im Vergleich zu älteren Garbage Collectors ganz anders.

Lassen Sie uns die Vorteile der Garbage Collection in Java verstehen.

Vorteile

  • Der größte Vorteil der Java-Garbage Collection ist, dass sie automatisch erfolgt behandelt das Löschen von nicht verwendeten Objekten oder einigen Objekten, auf die nicht zugegriffen werden kann, um Speicherressourcen freizugeben.
  • Die Garbage Collection ist jetzt eine neue Standardkomponente vieler gängiger Programmiersprachen.
  • Es macht Java speichereffizient. Dies liegt daran, dass der Garbage Collector die nicht referenzierten Objekte aus dem Heapspeicher entfernt.
  • Es ist automatisch erledigt vom Garbage Collector, der Teil von JVM ist.

Empfohlene Vorgehensweise

Der beste Ansatz zur Anpassung an die Java-Garbage Collection besteht darin, Flags in der JVM zu setzen. Flags können den zu verwendenden Garbage Collector anpassen. Dies trägt dazu bei, dass es sich am besten für die Backend-Verarbeitung eignet, bei der lange Pausen für die Speicherbereinigung akzeptabel sind.

Beachten Sie außerdem, dass der CMS-Garbage Collector so konzipiert ist, dass Pausen minimiert werden. Dies macht ihn ideal für GUI-Anwendungen, bei denen die Reaktionsfähigkeit von großer Bedeutung ist. Eine zusätzliche Feinabstimmung kann erreicht werden, indem die Größe des Haufens oder seiner Abschnitte geändert und die Effizienz der Speicherbereinigung gemessen wird.

Werfen wir einen Blick auf dieses Programm.

Klasse Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Wert von a =' + a) System.out.println ('Wert von 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 diesem Fall die beidenObjekte und zwei Referenzvariablen werden erstellt. Wenn Sie einen weiteren Befehl hinzufügen, e3 = Null,Zwei Referenzvariablen zeigen auf dasselbe Objekt. Und wenn es keinen Verweis auf die Variable gibt, ist e3 = e2e3.showData () Zu diesem Zeitpunkt gibt es keine Verweise auf das Objekt und es wird für die Speicherbereinigung berechtigt.

Dies bringt uns zum Ende dieses Artikels 'Garbage Collection in Java'. Wir haben gelernt, wie nicht verwendete Objekte im Heap und die verschiedenen Arten der Sammlung entfernt werden.

Wenn Sie diesen Artikel über 'Garbage Collection in Java' gefunden haben, lesen Sie die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Wir sind hier, um Ihnen bei jedem Schritt auf Ihrer Reise zu helfen. Wir erstellen einen Lehrplan, der für Studenten und Fachleute konzipiert ist, die Java-Entwickler werden möchten.

Hast du eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieser „Garbage Collection in Java '' und wir werden uns so schnell wie möglich bei Ihnen melden.

Auswahl Sortierprogramm in Java