Ответ
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)