Ответ
Размер стека потока в Go определяется при создании горутины и зависит от нескольких факторов:
- Go версия – в новых версиях размер может меняться (например, в 1.4 уменьшили с 8KB до 2KB)
- ОС и архитектура – разные платформы могут иметь разный минимальный размер
- Переменная окружения
GODEBUG– можно задатьGODEBUG=asyncpreemptoff=1для отключения асинхронной преемпции и увеличения стека - Флаг
-stack– при сборке можно указать начальный размер стека (например,-stack=4096)
По умолчанию:
- 2KB для 32-битных систем
- 4KB для 64-битных систем
Пример проверки:
func main() {
var x int
println(unsafe.Sizeof(x)) // размер переменной
}