- Ist G1 der Standardkollektor in Java 7 und wenn nicht, wie aktiviere ich G1?
G1 ist in Java 7 kein Standardkollektor. -XX:+UseG1GC
G1GC wird aktiviert
- Welche optionalen Einstellungen hat g1 in Java7?
Es gibt viele. In diesem Orakelartikel finden Sie vollständige Informationen.
Der G1 GC ist ein adaptiver Garbage Collector mit Standardeinstellungen, die es ihm ermöglichen, ohne Änderungen effizient zu arbeiten.
Passen Sie aus diesem Grund kritische Parameter an
-XX:MaxGCPauseMillis
-XX:G1HeapRegionSize
-XX:ParallelGCThreads
-XX:ConcGCThreads
und belassen Sie alle anderen Parameter auf dem Standardwert .
Hier finden Sie eine Liste wichtiger Optionen und ihrer Standardwerte. Diese Liste gilt für die neueste Java HotSpot-VM, Build 24. Sie können die G1 GC-Einstellungen in der JVM-Befehlszeile anpassen und optimieren.
Wichtige Standardeinstellungen:
-XX:G1HeapRegionSize=n
Legt die Größe einer G1-Region fest. Der Wert ist eine Zweierpotenz und kann zwischen 1 MB und 32 MB liegen. Das Ziel ist es, ungefähr 2048 Regionen basierend auf der minimalen Java-Heap-Größe zu haben.
-XX:MaxGCPauseMillis=200
Legt einen Zielwert für die gewünschte maximale Pausenzeit fest. Der Standardwert ist 200 Millisekunden. Der angegebene Wert passt sich nicht an Ihre Heap-Größe an.
-XX:G1NewSizePercent=5
Legt den Prozentsatz des Heaps fest, der als Minimum für die Größe der jungen Generation verwendet werden soll. Der Standardwert beträgt 5 Prozent Ihres Java-Heaps.
-XX:G1MaxNewSizePercent=60
Legt den Prozentsatz der Heap-Größe fest, der als Maximum für die Größe der jungen Generation verwendet werden soll. Der Standardwert beträgt 60 Prozent Ihres Java-Heaps.
-XX:ParallelGCThreads=n
Legt den Wert der STW-Arbeitsthreads fest. Setzt den Wert von n auf die Anzahl der logischen Prozessoren. Der Wert von n entspricht der Anzahl der logischen Prozessoren bis zu einem Wert von 8.
Wenn mehr als acht logische Prozessoren vorhanden sind, wird der Wert von n auf ungefähr 5/8 der logischen Prozessoren festgelegt. Dies funktioniert in den meisten Fällen mit Ausnahme größerer SPARC-Systeme, bei denen der Wert von n ungefähr 5/16 der logischen Prozessoren betragen kann.
-XX:ConcGCThreads=n
Legt die Anzahl der parallelen Markierungsfäden fest. Setzt n auf ungefähr 1/4 der Anzahl paralleler Garbage Collection-Threads (ParallelGCThreads).
-XX:InitiatingHeapOccupancyPercent=45
Legt den Java-Heap-Belegungsschwellenwert fest, der einen Markierungszyklus auslöst. Die Standardbelegung beträgt 45 Prozent des gesamten Java-Heaps.
-XX:G1MixedGCLiveThresholdPercent=65
Legt den Belegungsschwellenwert für eine alte Region fest, die in einen gemischten Speicherbereinigungszyklus aufgenommen werden soll. Die Standardbelegung beträgt 65 Prozent
-XX:G1HeapWastePercent=10
Legt den Prozentsatz des Heaps fest, den Sie verschwenden möchten. Die Java HotSpot-VM initiiert den gemischten Speicherbereinigungszyklus nicht, wenn der Prozentsatz der zurückfordernden Daten weniger als der Prozentsatz der Heap-Verschwendung ist
-XX:G1MixedGCCountTarget=8
Legt die Zielanzahl gemischter Speicherbereinigungen nach einem Markierungszyklus fest, um alte Regionen mit höchstens G1MixedGCLIveThresholdPercent-Live-Daten zu erfassen. Der Standardwert ist 8 gemischte Speicherbereinigungen
-XX:G1OldCSetRegionThresholdPercent=10
Legt eine Obergrenze für die Anzahl alter Regionen fest, die während eines gemischten Speicherbereinigungszyklus gesammelt werden sollen. Der Standardwert beträgt 10 Prozent des Java-Heaps
-XX:G1ReservePercent=10
Legt den Prozentsatz des Reservespeichers fest, der frei bleibt, um das Risiko von Überläufen zum Speicherplatz zu verringern. Der Standardwert beträgt 10 Prozent. Stellen Sie beim Erhöhen oder Verringern des Prozentsatzes sicher, dass der gesamte Java-Heap um denselben Betrag angepasst wird.
Sie haben viele G1GC-Parameter neu konfiguriert, die nicht erforderlich sind, wenn Sie der obigen Dokumentationsseite folgen. Bitte überprüfen Sie die obigen Empfehlungen, insbesondere für ParallelGCThreads und ConcGCThreads , die auf Ihren CPU-Kernen basieren sollen. Entfernen Sie die Neukonfiguration nicht benötigter Parameter.
Empfehlungen von Orakel:
Beachten Sie bei der Bewertung und Feinabstimmung von G1 GC die folgenden Empfehlungen:
Größe der jungen Generation : Vermeiden Sie es, die Größe der jungen Generation explizit mit der -Xmn
Option oder einer anderen verwandten Option wie z -XX:NewRatio
. Das Festlegen der Größe der jungen Generation überschreibt das Ziel der Pausenzeit .
Pausenzeitziele: Wenn Sie eine Garbage Collection auswerten oder optimieren, gibt es immer einen Kompromiss zwischen Latenz und Durchsatz. Der G1 GC ist ein inkrementeller Garbage Collector mit einheitlichen Pausen, aber auch mehr Overhead für die Anwendungsthreads. Das Durchsatzziel für den G1 GC liegt bei 90 Prozent Anwendungszeit und 10 Prozent Speicherbereinigungszeit .
- Wurden Änderungen an anderen Kollektoren wie cms oder dem Parallelkollektor in Java 7 vorgenommen?
Es gibt einige Änderungen mit Java 7. Schauen Sie sich diesen Artikel an
- Wo finde ich eine gute Dokumentation zur Garbage Collection in Java 7?
Siehe Oracle-Dokumentationsseite zu gc und verwandten SE-Fragen:
Java G1 Garbage Collection in der Produktion