С какими сборщиками мусора (Garbage Collector) в Java вы работали?

«С какими сборщиками мусора (Garbage Collector) в Java вы работали?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java существует несколько реализаций сборщиков мусора (GC), каждая оптимизирована под разные сценарии.

Основные типы сборщиков мусора:

Сборщик Ключевая характеристика Флаг включения Сценарий использования
Serial GC Однопоточный, Stop-The-World (STW) паузы. -XX:+UseSerialGC Клиентские приложения с малой кучей. Простота.
Parallel GC (Throughput) Многопоточный, оптимизирован для максимальной пропускной способности. -XX:+UseParallelGC Фоновые задачи, где важна общая производительность, а не минимальные задержки.
CMS (Concurrent Mark-Sweep) Устарел и удален (начиная с Java 14). Работал параллельно с приложением для сокращения пауз. -XX:+UseConcMarkSweepGC Исторически использовался для приложений, чувствительных к задержкам.
G1 (Garbage-First) Сборщик по умолчанию с Java 9. Баланс между пропускной способностью и временем пауз. Разделяет кучу на регионы. -XX:+UseG1GC Универсальный выбор для большинства серверных приложений.
ZGC Низколатентный, паузы не превышают 10 мс, даже на терабайтных кучах. -XX:+UseZGC Приложения, критичные к задержкам (финансовые системы, Big Data). Требует Linux/macOS.
Shenandoah Низколатентный, как ZGC, но с другими алгоритмами. Работает на большеем количестве ОС. -XX:+UseShenandoahGC Аналогично ZGC, но с более широкой поддержкой платформ.

Пример выбора и настройки GC:

# Запуск приложения с G1 GC и целевым временем паузы 200 мс
java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -jar my-application.jar

# Запуск с ZGC (Java 11+)
java -XX:+UseZGC -Xmx4g -jar my-low-latency-app.jar

Выбор GC зависит от требований приложения: пропускная способность (Throughput) vs. время отклика (Latency). Для большинства современных серверных приложений G1 является хорошим выбором по умолчанию. Для систем с экстремально низкими требованиями к задержкам рассматриваются ZGC или Shenandoah.