Что означает пауза stop-the-world при сборке мусора?
- Почему сборщик мусора останавливает приложение?
- Какие сборщики мусора есть в Java?
Stop-the-world — все потоки приложения приостанавливаются, пока сборщик выполняет часть работы; эти паузы и стараются сокращать.
- Остановка нужна, чтобы граф объектов не менялся в критические моменты
- Современные сборщики (G1, ZGC, Shenandoah) делают основную работу параллельно, паузы короткие
А ещё Длинные паузы напрямую превращаются во всплески времени ответа
Подробно
Чтобы корректно найти живые объекты и переместить их, сборщику нужно, чтобы приложение не меняло ссылки в критические моменты. Поэтому JVM останавливает все потоки приложения в безопасных точках (safepoint) — это пауза stop-the-world (STW).
Сборщики отличаются тем, какую часть работы делают во время паузы:
- Serial и Parallel — основная работа во время паузы; Parallel использует много потоков и даёт хорошую пропускную способность, но паузы длиннее;
- G1 — сборщик по умолчанию: куча разбита на регионы, есть цель по длительности паузы, часть работы идёт параллельно с приложением;
- ZGC и Shenandoah — почти вся работа конкурентная, паузы — доли миллисекунды независимо от размера кучи, ценой дополнительной нагрузки на процессор.
Практическое значение: длинная пауза — это запросы, которые в этот момент ждут, и всплеск на графике времени ответа (p99). Выбор сборщика — компромисс между пропускной способностью, задержкой и расходом памяти и CPU. Паузы видны в логах GC (-Xlog:gc).
Что хотят услышать
- Что такое пауза STW и зачем она нужна.
- Как современные сборщики сокращают паузы.
- Влияние пауз на время ответа.
- Названия основных сборщиков — плюс.
Частые ошибки
- Считать, что современные сборщики работают вообще без остановок.
- Оценивать сборщик только по пропускной способности, игнорируя задержки.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Потоки приложения ждут, пока работает сборщик
- ✗Сборщик останавливается, уступая процессор приложению
- ✗Приложение полностью завершает работу и перезапускается
- ✗Все сетевые соединения закрываются на время сборки
Что спросят дальше
- Почему конкурентная маркировка требует барьеров записи?
- Как выбирают между сборщиками?
Разбор темы
- GC: алгоритмы и сборщики
Mark-sweep-compact и копирование, stop-the-world и safepoints, конкурентная маркировка, G1 и ZGC и выбор по throughput/latency.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.