Heim  >  Artikel  >  Java  >  Arten von Garbage Collector in Java

Arten von Garbage Collector in Java

PHPz
PHPzOriginal
2024-08-30 15:54:06474Durchsuche

Die Typen der Java-Garbage Collectors definieren den Typ, den wir zum Entwickeln des Programms verwenden. Garbage Collection ist eine wichtige Funktion von Java. In Java verwenden wir die Garbage Collection, um nicht mehr verwendeten Speicher freizugeben. Der Garbage Collector verfolgt alle Objekte, die noch verwendet werden, und markiert die restlichen Objekte als Müll. Der Garbage Collector verwendet den Sweep-and-Mark-Algorithmus.

In Java ist Garbage Collection nichts anderes als die Verwaltung des Speichers; Wir machen dasselbe, indem wir JVM verwenden. Durch die Verwendung der Garbage Collection müssen wir die Zuweisung und Freigabe eines Objekts nicht mithilfe eines Programmierers durchführen. In Java reserviert und gibt die Anwendung Speicher frei, indem sie das Betriebssystem verwendet, und wir stellen dasselbe aus der Anwendung und der Speicherbereinigung neuer Variablen bereit.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Java bietet mehrere Garbage Collectors, die den unterschiedlichen Anforderungen der Anwendung gerecht werden. Die Auswahl des richtigen Garbage Collectors für unsere Anwendung ist sehr wichtig, um die Leistung unserer Anwendung zu verbessern. Java bietet mehrere Arten von Garbage Collectors, um den Anforderungen der Anwendung gerecht zu werden.

Arten von Garbage Collector in Java

Wichtige Erkenntnisse

  • Parallel GC in Java ist als Standard-Garbage Collector bekannt, der in JVM verwendet wird. Die Funktionsweise der parallelen GC ist die gleiche wie die der seriellen GC.
  • Der serielle Garbage Collector ist auf die Umgebungen von Single-Threaded abgestimmt. Es verwendet einen einzelnen Thread für GC.

Typen von Java Garbage Collectors

Unten sind die Arten von Java-Garbage Collectors aufgeführt.

Wir verwenden diese Typen gemäß unseren Anforderungen wie folgt:

  • Serieller Garbage Collector
  • Paralleler Garbage Collector
  • Gleichzeitiger Mark Sweep Garbage Collector
  • G1 Garbage Collector
  • Epsilon Garbage Collector
  • Z Garbage Collector
  • Shenandoah Müllsammler

Die Arbeitsweise und Leistung jedes Garbage Collectors ist unterschiedlich; es enthält ihre eigenen Vor- und Nachteile. Mit Java können wir jeden Garbage Collector auswählen, der von der JVM verwendet wird. Zum Zeitpunkt der Auswahl des Garbage Collectors müssen wir die Argumente von JVM übergeben.

1. Serieller Garbage Collector

Dieser Garbage Collector arbeitet, während er alle Threads der Anwendung hält. Wir können also sagen, dass Threads unserer Anwendung durch den Prozess des seriellen Garbage Collectors einfrieren. Dieser Prozess wird als Welt- und Stoppereignis bezeichnet. Um den Einsatz eines seriellen Garbage Collectors in der Serverumgebung zu ermöglichen, können wir diesen in einfachen Programmen verwenden.

Um den seriellen Garbage Collector zu verwenden, müssen wir –XX:+UseSerialGC im Argument der JVM ausführen. Wir können dies zum Zeitpunkt der Verwendung eines seriellen Garbage Collectors angeben.

2. Paralleler Garbage Collector

Der einzige Unterschied zwischen paralleler und serieller GC besteht darin, dass parallele GC mehrere Threads verwendet, während serielle GC nur einen einzelnen Thread verwendet. Wir verwenden paralleles GC, um den Durchsatz unserer Anwendung zu beschleunigen; Dies wird auch als Durchsatzkollektor bezeichnet.

Um den parallelen Garbage Collector zu verwenden, müssen wir –XX:+UseParallelGC im Argument von JVM verwenden. Parallele und serielle Garbage Collectors sind bei der Entwicklung von Java-Anwendungen unerlässlich.

3. CMS Garbage Collector

In CMS GC verwenden wir mehrere Threads, die für den Heap und das Scannen verwendet wurden, was die Entfernung markierter Instanzen markiert. Diese Art von GC friert den Anwendungsthread zum Zeitpunkt der GC nicht ein. Der Thread des Garbage Collectors wird gleichzeitig mit den Anwendungsthreads ausgeführt.

Mit diesem Garbage Collector können wir mehrere CPUs für einen besseren Durchsatz unserer Anwendung verwenden. Wir verwenden CMS GC, wenn wir mehr CPU zur Verfügung haben. Um dann den CMS-Garbage Collector zu verwenden, müssen wir –XX:+UseParNewGC im Argument von JVM verwenden. Wir verwenden dieses Java Virtual Machine-Argument, wenn wir diesen Garbage Collector verwenden.

4. G1 Garbage Collector

Der G1 Garbage Collector wird verwendet, wenn wir mehr als 4 GB Speicher enthalten. Dieser GC unterteilt den Heap in gleich große Blöcke und führt die parallele Garbage Collection entsprechend der Priorität durch. Der G1-Garbage Collector zeigt die globale Markierungsphase.

Während der Markierungsphase sammelt dieser Garbage Collector die Informationen, die das Objekt des Garbage Collectors enthalten. Um dann den G1 Garbage Collector zu verwenden, müssen wir –XX:+UseG1GC im Argument von JVM verwenden.

5. Epsilon Garbage Collector

Dies ist ein passiver oder nicht betriebsbereiter Garbage Collector. Dieser Garbage Collector reserviert den Speicher für die Anwendung, sammelt jedoch nicht die nicht verwendeten Objekte. Wenn die Anwendung den Heap erschöpft, wird die JVM heruntergefahren, sodass wir sagen können, dass dieser GC zulässt, dass die Anwendung nicht über genügend Speicher verfügt oder abstürzt.

Der Hauptzweck dieses Garbage Collectors besteht darin, die Leistung der Anwendung zu verwalten und zu messen. Dieser Garbage Collector enthält die komplexen Programme, die innerhalb des Programms ausgeführt wurden.

6. Z Garbage Collector

Dieser Garbage Collector führt die gesamte Arbeit gleichzeitig aus, ohne die Ausführung unserer Anwendungen zu stoppen. Dieser Garbage Collector verarbeitet einen Heap, der mehrere Terabyte groß ist.

Diese Art von Garbage Collector führt seinen Zyklus in Threads durch. Die Anwendung wird in einer durchschnittlichen Zeit von 1 MS unterbrochen.

7. Shenandoah Garbage Collector

Diese Art von Garbage Collector verwendet die Speicherbereiche, um zu verwalten, welche Objekte nicht mehr verwendet werden und welche zur Komprimierung bereit waren. Dieser Garbage Collector fügt den Weiterleitungszeiger zu jedem Heap hinzu, der den Kontrollzugriff auf das angegebene Objekt verwendet.

JVM-Argumente

Im Folgenden finden Sie die Argumente für Java Virtual Machines. Wir verwenden diese Argumente in Garbage Collectors wie folgt.

  • –XX:ParallelGCThreads=: Dieses Argument steuert die Anzahl der GC-Threads.
  • –XX:MaxGCPauseMillis=: Dieses Argument gibt die maximale Pausenzeit an.
  • –XX:GCTimeRatio=: Dieses Argument gibt das maximale Durchsatzziel an.
  • –XX:+UseSerialGC: Dieses Argument gibt den seriellen Garbage Collector an.
  • –XX:+UseParallelGC: Dieses Argument gibt den parallelen Garbage Collector an.
  • –XX:+UseG1GC: Dieses Argument gibt den G1-Garbage Collector an.
  • –XX:+UseConcMarkSweepGC: Dieses Argument gibt den CMS-Garbage Collector an.
  • –XX:ParallelCMSThreads: Dieses Argument gibt den CMS-Kollektor und die Anzahl der Threads an, die wir verwenden.
  • -XX:InitiatingHeapOccupancyPercent=: Dieses Argument steuert die Heap-Belegung beim Starten des gleichzeitigen Zyklus.
  • -XX:G1MixedGCLiveThresholdPercent=: Wenn ein Live-Objekt in der alten Region vorhanden ist, schließt dieses Argument seinen Wert aus dem GC-Objekt aus.
  • -XX:G1HeapWastePercent=: Dieses Argument gibt die Anzahl der Regionen an, die verschwendet werden dürfen.

Fazit

Java bietet eine Vielzahl von Garbage Collectors, um den Anforderungen verschiedener Anwendungen gerecht zu werden. Die Auswahl des richtigen Garbage Collectors für unsere Anwendung zur Verbesserung ihrer Leistung ist von entscheidender Bedeutung. Der Typ des Java-Garbage Collectors definiert den Typ des Garbage Collectors, den wir bei der Entwicklung des Programms verwenden. Java verfügt über eine wichtige Funktion namens Garbage Collection.

Das obige ist der detaillierte Inhalt vonArten von Garbage Collector in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Java 9-ModuleNächster Artikel:Java 9-Module