Что такое Stop-The-World

«Что такое Stop-The-World» — вопрос из категории Управление памятью, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Stop-The-World (STW) — это пауза в работе приложения, когда JVM полностью останавливает выполнение всех потоков для выполнения критических операций, таких как сборка мусора (GC).

Пример:

// Во время STW UI может "зависнуть"
fun heavyOperation() {
    val list = mutableListOf<ByteArray>()
    repeat(100_000) {
        list.add(ByteArray(1024)) // Создаем мусор
    }
    System.gc() // Принудительный вызов GC (вызовет STW)
}

Последствия:

  • Задержки в отрисовке UI (например, при сборке мусора в основном потоке)
  • Ухудшение UX, если STW длится дольше 16 мс (пропуск кадров)

Как минимизировать:

  • Оптимизировать аллокации (избегать лишних объектов)
  • Использовать фоновые потоки для тяжелых операций
  • Выбирать GC с короткими паузами (например, ART в Android использует Generational GC)