Что такое escape analysis?

Middle+
1.5k просмотров
AFK Offer AI

Анализ компилятора, определяющий где аллоцировать переменную: на стеке или в куче. Если переменная не «убегает» из функции — стек (дешёво, автоматическая очистка). Если убегает (возвращается, передаётся по указателю, сохраняется в интерфейс) — куча (дороже, нагружает GC).

Посмотреть решения компилятора:

go build -gcflags="-m" ./...
# ./main.go:10: moved to heap: x

Типичные причины escape: возврат указателя на локальную переменную, присвоение интерфейсу, замыкания, слишком большие объекты. Зная это, можно оптимизировать hot path — избегать лишних аллокаций на хипе.

Следующий вопрос

Что такое worker pool паттерн?