Pourquoi Java 10 est-il recommandé si vous utilisez le G1 GC?


Java 10 réduit les temps de pause complets du GC en améliorant itérativement son algorithme existant.

-XX:ParallelGCThreads

Si je l'ai compris, G1 n'exécute pas ses cycles de collecte simultanément avec notre application. Il arrêtera toujours l'application périodiquement et les pauses complètes du GC augmenteront avec des tailles de tas plus grandes. 

Alors, comment améliore-t-il les performances? Quelqu'un peut-il expliquer cela?

Author: Boann, 2018-12-25

2 answers

En fait, Java 11est recommandé si vous utilisez G1GC car beaucoup de travaux ont été effectués dessus pour réduire son empreinte et réduire ses pauses par rapport à 10.

Un résumé a été fait sur la liste de diffusion hotspot-gc-use autour des différentes améliorations apportées sur 11, 10 et 9 pour G1GC, vous pouvez le retrouver sur ce lien: http://mail.openjdk.java.net/pipermail/hotspot-gc-use/2018-June/002759.html

Un résumé rapide de ce post sur la liste:

[...] Je voudrais souligner que dans l'ensemble, avec G1, par rapport à JDK8, il est possible d'obtenir 60% de temps de pause inférieurs "gratuitement" sur x64 processeurs (probablement plus sur ARM / PPC en raison des spécificités mentionnées changements), à une empreinte mémoire très réduite.

 0
Author: loicmathieu, 2019-01-28 19:45:55

Parce que ce n'est qu'à Java 10 que G1GC est devenu complètement parallèle dans le cycle complet du GC stop-the-world. Selon JEP 307: Parallel Full GC pour G1{[2] } cela améliore la latence du pire scénario:

Le garbage collector G1 est conçu pour éviter les collections complètes, mais lorsque les collections simultanées ne peuvent pas récupérer de mémoire assez rapidement, un GC complet se produira. L'implémentation actuelle du GC complet pour G1 utilise un algorithme mark-sweep-compact à un seul thread. Nous l'intention est de paralléliser l'algorithme mark-sweep-compact et d'utiliser le même nombre de threads que les collections Young et Mixed. Le nombre de threads peut être contrôlé par l'option-XX:ParallelGCThreads, mais cela affectera également le nombre de threads utilisés pour les collections Young et Mixed.

 6
Author: Karol Dowbecki, 2018-12-25 20:28:00