Что означает Stop The World

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

Ответ

Stop The World (STW) — это пауза в выполнении всех горутин во время работы сборщика мусора (GC) в Go. В этот момент программа полностью останавливается для сканирования и освобождения памяти.

Пример:

package main

import (
    "runtime"
    "time"
)

func main() {
    go func() {
        for {
            time.Sleep(100 * time.Millisecond)
        }
    }()

    runtime.GC() // Вызывает STW паузу
}

Нюансы:

  • Чем больше heap, тем дольше STW.
  • Go 1.8+ сократил STW до субмиллисекундных задержек в большинстве случаев.
  • Можно мониторить через debug.SetGCPercent() или GODEBUG=gctrace=1.

Оптимизация: уменьшение количества указателей в куче снижает время STW.