Комментарии 14
Java 11 вышла в 2018 году. Там default GC - G1. В 2021 году вышла Java 17, где уже в production перешел ZGC (у которого очень низкие паузы), а также улучшен алгоритм Shenandoah (который тоже в 11 появился, и тоже с низкими паузами).
Так что, в любом случае, описанные выше алгоритмы немножко устарели, скажем прямо.
Простите. А вы можете запилить статью на эту тему?
Хотя конечно, очередная статья про нее через 8 лет после выхода — глупость несусветная.
Да, у нас тоже еще местами используется Java 8. Но без G1 сборщика мусора на большой нагрузке (где больше 64ГБ памяти) скажем прямо не очень хорошо. Пи высокой скорости генерации мусора попасть из-за дефрагментации памяти в STW в Java 8 очень просто. И главное - там будет однопоточная полная сборка мусора (что могло вешать сервак на 2 минуты при 128GB памяти). В том же G1 даже, если вдруг по ошибке пройдет полная сборка мусора, то она на том же объеме памяти занимает секунд 30.
Но и с G1 есть проблемы, так как на памяти свыше 128ГБ Mixed сборки уже занимают больше 3 секунд, что критично (и там никакие настройки не помогают). Поэтому смотрим в сторону ZGC (даже пробовали в проде на Java 11, но там были нюансы и пришлось откатить). Там паузы были очень хорошие. В ближайшее время будем на 17й пробовать, если все ок, то будем переводить на 17ю всеъ.
Извините, насколько актуальна эта статья? Я похожие уже лет пять-семь читаю, хотелось бы чего-нибудь актуального.
Мне для повторения очень даже норм. Вот сейчас только я очевидно запомнил как именно работает GC и что можно там настроить.
Что толку повторять, если сейчас используются уже другие gc? В статье информация ~десятилетней давности, если не двенадцатилетней.
И действительно, ссылки ведут в статьи из 2011 года.
Статья мягко говоря "несвежая". CMS коллектор уже 2 года (с 14 java) как вырезан.
Сборка мусора в Java