Сколько весит горутина

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

Ответ

Горутина в Go — это легковесный поток, управляемый рантаймом. Её начальный размер стека — 2 КБ (можно изменить через runtime/debug.SetMaxStack).

Основные моменты:

  • Стек горутины динамически растёт/уменьшается (до 1 ГБ по умолчанию).
  • Память под стек выделяется в куче.
  • Дополнительные затраты: планировщик (~2 КБ на горутину), каналы, defer-вызовы и т.д.

Пример с измерением:

var before, after runtime.MemStats
runtime.ReadMemStats(&before)
go func() {}()
runtime.ReadMemStats(&after)
fmt.Printf("≈%d bytesn", after.TotalAlloc - before.TotalAlloc)

Итог: Минимальный вес — ~2-4 КБ, но реальное потребление зависит от использования.