Хоча я не тестував G1 у виробництві, я думав, що прокоментую, що GC вже є проблематичним для випадків без "величезних" куп. Зокрема, послуги з лише, скажімо, 2 або 4 концертами можуть сильно вплинути на GC. GC молодого покоління, як правило, не є проблематичним, оскільки вони закінчуються за однозначні мілісекунди (або щонайбільше двозначні). Але колекції старого покоління є набагато проблематичнішими, оскільки вони займають кілька секунд із розмірами старих поколінь 1 гіг або вище.
Тепер: теоретично CMS може там дуже допомогти, оскільки більшу частину своєї роботи вона може виконувати одночасно. Однак з часом траплятимуться випадки, коли він не може цього зробити, і йому доводиться відступати, щоб "зупинити світ". І коли це трапиться (скажімо, через 1 годину - не часто, але все-таки занадто часто), добре, тримайся своїх капелюхів. Це може зайняти хвилину і більше. Це особливо проблематично для служб, які намагаються обмежити максимальну затримку; замість того, щоб подати запит, скажімо, 25 мілісекунд, зараз потрібно десять секунд або більше. Щоб додати шкоди образі, клієнти часто таймають час запиту та повторюють спробу, що призводить до подальших проблем (інакше як "лайна").
Це одна область, де сподівалися, що G1 дуже допоможе. Я працював у великій компанії, яка пропонує хмарні послуги для зберігання та відправлення повідомлень; і ми не могли використовувати CMS, оскільки, хоча більшу частину часу він працював краще, ніж паралельні сорти, він мав ці розпади. Тож протягом години все було приємно; а потім речі потрапляють у вентилятор ... і оскільки сервіс базувався на кластерах, коли один вузол потрапляв у неприємності, інші, як правило, слідували (оскільки індуковані GC тайм-аути призводять до того, що інші вузли вважають, що вузол аварійно завершився, що призвело до повторних маршрутів).
Я не думаю, що GC є такою великою проблемою для програм, і, можливо, навіть некластеризовані послуги рідше зачіпаються. Але все більше і більше систем є кластеризованими (зокрема завдяки сховищам даних NoSQL) і розміри купи зростають. GC OldGen надзвичайно лінійно пов'язані з розміром купи (це означає, що подвоєння розміру купи більше, ніж подвоює час GC, припускаючи, що розмір поточного набору даних також подвоюється).