Standard-Garbage Collector für Java 8

94

Was ist der Standard-Garbage Collector für Java 8?

Wenn ich die JMX-Beans überprüfe, zeigen sie, dass es sich um den Parallelkollektor für die neue Generation und den alten seriellen Kollektor für die alte Generation handelt.

Code Junkie
quelle

Antworten:

128

Standard-Garbage Collectors:

  • Java 7 - Parallel GC
  • Java 8 - Parallel GC
  • Java 9 - G1 GC
  • Java 10 - G1 GC
x4444
quelle
80

Die Auswahl des Standard-Garbage-Collectors (unter anderem) wird als Ergonomieprozess der JVM bezeichnet. Dieser Vorgang hängt von der Klasse Ihrer Maschine ab.

  • Bei Computern der Serverklasse, die als Computer mit 2 oder mehr physischen Prozessoren und 2 oder mehr GB physischem Speicher (unabhängig von der Plattform) definiert sind, ist der Standard-Garbage Collector der Parallel Collector (auch als Durchsatzkollektor bezeichnet).
  • Bei Computern der Client-Klasse, die unter Windows als 32-Bit-Plattform oder als Computer mit einem einzelnen Prozessor definiert sind, ist der standardmäßige Garbage Collector der serielle Collector.

Da praktisch alle Maschinen über 2 oder mehr CPUs verfügen, wird eine Maschine von der JVM praktisch immer als Serverklasse betrachtet. Aus diesem Grund finden Sie viele Referenzen, die den Parallelkollektor als Standard-Garbage-Collector betrachten.

Tunaki
quelle
54

Java hat vier Arten von Garbage Collectors (bis Version 10), aber nach der stabilen Veröffentlichung von Java 11 wären es 5 Arten. Diese sind:-

  1. Serial Garbage Collector- S GC
  2. Parallel Garbage Collector- P GC
  3. CMS Garbage Collector- CMS GC
  4. G1 Garbage Collector- G1 GC
  5. Der Z Garbage Collector- ZGC

Standardimplementierungen von GC in Java -

JVM GC

 Java 7 - P GC       
 Java 8 - P GC
 Java 9 - G1 GC
 Java 10- G1 GC
 Java 11- Z GC(I am not sure but it would be default GC of java 11)

Weitere Details zu ZGC finden Sie unter

http://openjdk.java.net/projects/zgc/

https://www.opsian.com/blog/javas-new-zgc-is-very-exciting/

Hinweis: Wenn Sie überprüfen möchten, welcher GC derzeit von JVM verwendet wird, können Sie den folgenden Befehl ausführen, um den Standard-GC anzuzeigen: -

$ java -XX:+PrintCommandLineFlags -version 

Wenn Sie GC entsprechend Ihren Anforderungen einstellen möchten, können Sie dies mit dem folgenden Befehl tun. Hier werde ich G1 GC als Standard-GC festlegen.

$ java -XX:+UseG1GC -XX:+PrintCommandLineFlags -version 

Geben Sie hier die Bildbeschreibung ein

For more details , please visit 

https://javapapers.com/java/types-of-java-garbage-collectors/

https://alvinalexander.com/java/java-jvm-how-show-which-garbage-collector-running

Brajesh
quelle
Wäre nützlich, um die Quelle des Diagramms für weitere Details zu erwähnen
Xagaffar
2
Hallo @xagaffar hier ist Quelle URL javapapers.com/java/types-of-java-garbage-collectors
Brajesh
1
@Brajesh Ich glaube nicht, dass ZGC der Standard-GC von JDK 11 ist. Öffnen Sie das JDK-Wiki ( wiki.openjdk.java.net/display/zgc/Main ) und geben Sie "Verwenden Sie die Optionen -XX: + UnlockExperimentalVMOptions -XX: + UseZGC an, um es zu aktivieren ZGC. " Das heißt, es ist nicht die Standardeinstellung.
Ashish Kumar
Nein, es ist nicht die Standardeinstellung von JDK11. -XX: + UnlockExperimentalVMOptions -XX: + Verwenden Sie die ZGC-Optionen, damit ZGC ZGC entsperren kann
vsingh
1
Die Flussdiagramme des Bildes sind wirklich nützlich, um den Unterschied zwischen "seriellen", "parallelen" und "gleichzeitigen" Müllsammlern zu erklären, aber mit diesen neun farbigen Quadraten für den G1-Kollektor wird es wirklich unsinnig. Was sollen sie bedeuten? Fäden werden zu Quadraten?
Holger