Garbage collector par défaut pour Java 8

94

Quel est le garbage collector par défaut pour Java 8?

Lorsque je vérifie les Beans JMX, ils révèlent qu'il s'agit du collecteur parallèle pour la nouvelle génération et de l'ancien collecteur série pour l'ancienne génération.

Accro au code
la source

Réponses:

130

Garbage collors par défaut:

  • Java 7 - GC parallèle
  • Java 8 - GC parallèle
  • Java 9 - GC G1
  • Java 10 - GC G1
x4444
la source
Veuillez créer un lien vers la source d'information.
Eduard Wirch il y a
80

La sélection du ramasse-miettes par défaut (entre autres) est ce qu'on appelle le processus d' ergonomie de la JVM. Ce processus dépend de la classe de votre machine.

  • Pour une machine de classe serveur, définie comme une machine avec 2 processeurs physiques ou plus et 2 Go ou plus de mémoire physique (quelle que soit la plate-forme), le ramasse-miettes par défaut est le collecteur parallèle (également appelé collecteur de débit).
  • Pour une machine de classe client, définie comme une plate-forme 32 bits sous Windows ou une machine à processeur unique, le garbage collector par défaut est le collecteur série.

Étant donné que pratiquement toutes les machines ont 2 CPU ou plus, une machine est pratiquement toujours considérée comme une classe serveur par la JVM. C'est pourquoi vous trouverez de nombreuses références considérant le collecteur parallèle comme le garbage collector par défaut.

Tunaki
la source
55

Java a quatre types de ramasse-miettes (jusqu'à la version 10), mais après la version stable de java 11, ce serait 5 types. Ceux-ci sont:-

  1. Collecteur de déchets série S GC
  2. Collecteur d'ordures parallèle P GC
  3. Collecteur de déchets CMS CMS GC
  4. Garbage Collector G1 G1 GC
  5. Le ramasse-miettes Z- ZGC

Implémentations par défaut de GC en Java -

GC JVM

 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)

Plus de détails pour ZGC, veuillez visiter

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

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

Remarque: Si vous souhaitez vérifier quel GC est actuellement utilisé par JVM, vous pouvez utiliser la commande suivante pour afficher le GC par défaut: -

$ java -XX:+PrintCommandLineFlags -version 

Si vous souhaitez définir GC en fonction de vos besoins, vous pouvez le faire en suivant la commande. Ici, je vais définir G1 GC comme GC par défaut.

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

entrez la description de l'image ici

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
la source
Il serait utile de mentionner la source du diagramme pour plus de détails
xagaffar
2
salut @xagaffar voici l'url source javapapers.com/java/types-of-java-garbage-collectors
Brajesh
3
@Brajesh Je ne pense pas que ZGC soit le GC par défaut du JDK 11. Ouvrez le wiki JDK ( wiki.openjdk.java.net/display/zgc/Main ) indique "Utilisez les options -XX: + UnlockExperimentalVMOptions -XX: + Utilisez les options ZGC pour activer ZGC. " cela signifie que ce n'est pas la valeur par défaut.
Ashish Kumar
1
Non, ce n'est pas la valeur par défaut du JDK11. -XX: + UnlockExperimentalVMOptions -XX: + UseZGC options pour activer ZGC pour déverrouiller ZGC
vsingh
1
Les organigrammes de l'image sont vraiment utiles pour expliquer la différence entre les garbage collector "en série", "parallèles" et "simultanés", mais cela devient vraiment insensé avec ces neuf carrés de couleur pour le collecteur G1. Que sont-ils censés signifier? Les fils deviennent des carrés?
Holger