CodeGym /Java-Kurse /Modul 3: Java Professional /Auswahl eines Garbage Collectors in Java

Auswahl eines Garbage Collectors in Java

Modul 3: Java Professional
Level 18 , Lektion 6
Verfügbar

7.1* So wählen Sie den richtigen Garbage Collector aus

Wenn für Ihre Anwendung keine strengen Latenzanforderungen gelten, sollten Sie die Anwendung einfach ausführen und die JVM selbst den richtigen Kollektor auswählen lassen.

In den meisten Fällen funktionieren die Standardeinstellungen einwandfrei. Bei Bedarf können Sie die Heap-Größe anpassen, um die Leistung zu verbessern. Wenn die Leistung immer noch nicht den Erwartungen entspricht, versuchen Sie, den Kollektor an die Anforderungen Ihrer Anwendung anzupassen.

  • Sequentielle . Wenn die Anwendung über einen kleinen Datensatz verfügt (bis zu etwa 100 MB) und/oder auf einem einzelnen Prozessor ohne Latenzanforderungen ausgeführt wird.
  • Parallel . Wenn die Priorität auf der Spitzenleistung der Anwendung liegt und keine Latenzanforderungen bestehen (oder Pausen von einer Sekunde oder mehr akzeptabel sind).
  • CMS/G1 . Wenn die Antwortzeit wichtiger ist als der Gesamtdurchsatz, sollten die Pausen bei der Garbage Collection kürzer als eine Sekunde sein.
  • ZGC . Wenn die Antwortzeit hohe Priorität hat und/oder ein sehr großer Heap beteiligt ist.

7.2* Empfehlungen für die Müllsammlung

Vermeiden Sie manuelle Auslöser

Neben den grundlegenden Mechanismen der Garbage Collection ist einer der wichtigsten Punkte dieses Prozesses in Java, dass er nicht deterministisch ist. Das heißt, es ist unmöglich, genau vorherzusagen, wann es zur Laufzeit auftreten wird.

Mit den Methoden System.gc() oder Runtime.gc() können Sie einen Hinweis in Ihren Code einfügen, um den Garbage Collector zu starten. Dies garantiert jedoch nicht, dass er tatsächlich ausgeführt wird.

Nutzen Sie Analysetools

Wenn Sie nicht über genügend Arbeitsspeicher zum Ausführen Ihrer Anwendung verfügen, kommt es zu Verlangsamungen, langen Garbage-Collection-Zeiten, „Weltstopp“-Ereignissen und schließlich zu Fehlern aufgrund von nicht genügend Arbeitsspeicher. Dies kann darauf hindeuten, dass der Heap zu klein ist, es kann aber auch darauf hinweisen, dass die Anwendung einen Speicherverlust aufweist.

Sie können ein Überwachungstool wie jstat oder Java Flight Recorder verwenden, um zu sehen, ob die Heap-Nutzung unbegrenzt ansteigt, was auf einen Fehler im Code hinweisen könnte.

Bevorzugen Sie die Standardeinstellungen

Wenn Sie eine kleine, eigenständige Java-Anwendung haben, müssen Sie wahrscheinlich keine Garbage Collection einrichten. Die Standardeinstellungen werden Ihnen gute Dienste leisten.

Verwenden Sie JVM-Flags zum Anpassen

Der beste Ansatz zum Einrichten der Garbage Collection in Java besteht darin, JVM-Flags zu setzen. Flags können verwendet werden, um den Garbage Collector (z. B. Serial, G1 usw.), die anfängliche und maximale Größe des Heaps, die Größe der Heap-Partitionen (z. B. junge Generation, alte Generation) und vieles mehr festzulegen mehr.

Wählen Sie den richtigen Wasserhahn

Eine gute Richtlinie für die Anfangseinstellungen ist die Art der benutzerdefinierten Anwendung. Beispielsweise ist der gleichzeitige Garbage Collector effizient, löst jedoch häufig „Weltstopp“-Ereignisse aus, wodurch er besser für die interne Verarbeitung geeignet ist, bei der lange Pausen akzeptabel sind.

Gleichzeitig ist der CMS-Garbage Collector darauf ausgelegt, die Latenz zu minimieren, was ihn ideal für Webanwendungen macht, bei denen es auf Reaktionsfähigkeit ankommt.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION