Actuellement, nous utilisons le garbage collector incrémentiel en ajoutant -Xincgc
à la commande Java. Dans JDK 8 ce commutateur est déconseillé. Donc quel est le remplacement équivalent pour elle? -XX:+UseG1GC
?
Contexte: L'application a un tas de 8 Go et crée beaucoup d'objets vivants courts. J'ai remarqué qu'il s'arrêtait souvent pendant quelques secondes pour faire la collecte des ordures. Par curiosité, j'ai ajouté le -Xincgc
et a constaté que les pauses avaient disparu et que les performances globales avaient été améliorées ~ 4 fois.
Malheureusement, je n'ai trouvé aucune information sur quel type de ramasse-miettes le -Xincgc
déclenche. Il y a le [~ # ~] cms [~ # ~] (Marque et balayage simultanés) et le nouveau G1 (Ordures d'abord). Mais qu'est-ce que j'obtiens avec -Xincgc
?
Pour Oracle/OpenJDK 8, le collecteur par défaut sur la plupart des machines est le collecteur de débit parallèle, à l'exception de certaines machines Windows 32 bits où il peut s'agir du GC série.
Xincgc est CMS en mode incrémentiel. Le principal avantage que vous voyez est probablement dû au passage du collecteur de débit au CMS, et non au mode incrémentiel, qui est conçu pour les processeurs monocœur.
Le mode incrémentiel est également déconseillé , il suffit donc d'activer le CMS via -XX:+UseConcMarkSweepGC
et voyez si cela fonctionne pour vous.
Bien sûr, vous pouvez également essayer G1GC, qui est également conçu pour atteindre des objectifs de temps de pause bas et a l'avantage de ne pas souffrir de fragmentation comme le fait CMS et est donc moins susceptible de rencontrer des échecs de mode simultané qui entraînent un arrêt à un seul thread la collection du monde.
Alors, essayez les deux et mesurez.
Voir aussi: Oracle's Java 8 GC Tuning Guides
Jusqu'à cette option complètement déconseillée par Oracle dans la version la plus récente. Nous pourrions toujours l'utiliser, en appliquant les paramètres jvm suivants:
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
Les 2 derniers paramètres servent à se connecter aux activités du GC.