Bien que je n'ai pas testé G1 en production, j'ai pensé que je dirais que les GC sont déjà problématiques pour les cas sans tas "énormes". Plus précisément, les services avec seulement, disons, 2 ou 4 concerts peuvent être gravement touchés par GC. Les GC de la jeune génération ne posent généralement pas de problème car ils se terminent en millisecondes à un chiffre (ou au plus à deux chiffres). Mais les collections d'ancienne génération sont beaucoup plus problématiques car elles prennent plusieurs secondes avec des tailles d'ancienne génération de 1 gig ou plus.
Maintenant: en théorie, le CMS peut beaucoup y aider, car il peut exécuter la plupart de ses opérations simultanément. Cependant, avec le temps, il y aura des cas où il ne pourra pas le faire et devra se rabattre sur la collection «stop the world». Et quand cela se produit (après, disons, 1 heure - pas souvent, mais encore trop souvent), eh bien, gardez vos putains de chapeaux. Cela peut prendre une minute ou plus. Ceci est particulièrement problématique pour les services qui tentent de limiter la latence maximale; au lieu de prendre, disons, 25 millisecondes pour traiter une demande, il faut maintenant dix secondes ou plus. Pour ajouter une blessure à l'insulte, les clients expireront souvent la demande et réessayeront, ce qui entraînera d'autres problèmes (alias "shit storm").
C'est un domaine dans lequel G1 espérait beaucoup aider. J'ai travaillé pour une grande entreprise qui propose des services cloud pour le stockage et l'envoi de messages; et nous ne pouvions pas utiliser CMS car bien que la plupart du temps cela fonctionnait mieux que les variétés parallèles, il y avait ces effondrements. Donc, pendant environ une heure, les choses étaient bien; et puis les choses ont frappé le ventilateur ... et parce que le service était basé sur des clusters, quand un nœud a eu des problèmes, d'autres ont généralement suivi (puisque les délais induits par GC conduisent d'autres nœuds à croire que le nœud s'est écrasé, conduisant à des réacheminements).
Je ne pense pas que GC soit un problème pour les applications, et peut-être que même les services non groupés sont moins souvent affectés. Mais de plus en plus de systèmes sont regroupés (en particulier grâce aux magasins de données NoSQL) et la taille des tas augmente. Les GC OldGen sont super-linéairement liés à la taille du tas (ce qui signifie que doubler la taille du tas fait plus que doubler le temps GC, en supposant que la taille de l'ensemble de données en direct double également).