Что происходит в рамках Stop-the-World паузы? Почему требуется остановка потоков при работе garbage collector?

Во время STW Java-потоки приостанавливаются в безопасных для JVM точках, чтобы GC мог выполнить фазы, требующие согласованного состояния. Набор действий зависит от сборщика: корни, перемещение или завершение маркировки.

Короткий ответ

Что ответить на собеседовании

Во время STW Java-потоки приостанавливаются в безопасных для JVM точках, чтобы GC мог выполнить фазы, требующие согласованного состояния. Набор действий зависит от сборщика: корни, перемещение или завершение маркировки.

Подробный разбор

Ответ с пояснениями

Во время STW Java-потоки приостанавливаются в безопасных для JVM точках, чтобы GC мог выполнить фазы, требующие согласованного состояния. Набор действий зависит от сборщика: корни, перемещение или завершение маркировки.

Если объекты перемещаются, ссылки должны корректно обновиться, пока приложение не наблюдает промежуточное состояние. Concurrent-сборщики выполняют значительную часть работы вместе с приложением, используя barriers, но всё равно могут иметь короткие паузы. Parallel GC уменьшает время некоторых фаз несколькими GC-потоками, не делая их автоматически concurrent. Safepoint нужен и не только для GC.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее