Ответ
Максимальный размер стека горутины в Go зависит от версии и ОС:
- В Go 1.2+ размер стека начинается с 2 КБ (на 32-битных системах) или 4 КБ (на 64-битных)
- Стек может динамически расти до 1 ГБ (на 64-битных системах) или 250 МБ (на 32-битных)
Пример проверки текущего размера:
var stackSize = 8 * 1024 * 1024 // 8MB
func main() {
var buf [stackSize]byte
// Использование buf предотвращает оптимизацию
runtime.KeepAlive(buf)
}
Горутины используют сегментированный стек, который автоматически расширяется по мере необходимости. Это отличает их от потоков ОС с фиксированным стеком.