Как работает escape analysis в Go?

Middle
163 просмотров
AFK Offer AI

Компилятор анализирует живёт ли переменная дольше функции. Если нет — аллоцирует на стеке (бесплатно). Если да (escapes) — на heap (GC). Причины escape: возврат указателя, присваивание интерфейсу, отправка в канал, closure capture, слишком большой объект. go build -gcflags="-m" показывает решения. Оптимизация: передавать по значению, избегать interface{}.

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

Как спроектировать job queue с приоритетами на Go?