Данные не указаны.
Какой сборщик мусора используется по умолчанию в Java 11?
Данные не указаны.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Какой сборщик мусора используется по умолчанию в Java 11? (G1)
- В Java 11 стандартным сборщиком мусора является Garbage-First (G1) GC.
- G1 представляет собой региональный и параллельный сборщик мусора.
- Heap разделяется на небольшие региональные зоны, как правило размером от 1 до 32 МБ.
- В первую очередь обрабатываются регионы с наибольшим объёмом мусора, что помогает сократить паузы.
- Сборщик рассчитан на использование многоядерных систем и поддерживает конкурентную работу.
- G1 хорошо подходит для приложений с большим heap и требованиями к низким latencies.
- Он предназначен для замены CMS и повышения производительности сборки мусора, используемой по умолчанию.
G1 позволяет сбалансировать пропускную способность и отзывчивость приложений в современных JVM.
Развёрнутый ответ
Краткий ответ
В Java 11 по умолчанию применяется сборщик мусора G1 (Garbage-First). Он сочетает небольшие задержки с высокой пропускной способностью, поэтому подходит для большинства современных приложений.
Основные особенности
- G1 делит heap на множество регионов и сначала выбирает для сборки те из них, где скопилось больше всего мусора. Такой подход помогает уменьшать длительность пауз.
- В Java 9 G1 был закреплён в качестве экспериментального сборщика, а начиная с Java 10+ стал сборщиком по умолчанию, заменив прежний Parallel GC.
- G1 сочетает фоновую сборку (concurrent) с короткими паузами (stop-the-world). Благодаря этому при размере heap до нескольких сотен гигабайт можно добиться низкой латентности — примерно ~10-100 мс.
- Для очень больших heap, начиная с нескольких сотен гигабайт, в новых версиях Java рекомендуются ZGC или Shenandoah. Однако в Java 11 основным вариантом по-прежнему остаётся G1.
Практическое применение
G1 является стандартным сборщиком для корпоративных приложений, микросервисов и серверных систем, в которых требуется сохранить баланс между пропускной способностью и минимальными задержками. Его параметры позволяют гибко задавать целевые паузы по задержкам через -XX:MaxGCPauseMillis, а наблюдение за работой сборщика выполняется с помощью встроенных инструментов JVM и Prometheus exporters.