← All benchmarksGo
100,000 goroutines in Go: about 273 MB, 568 ms
How much memory do 100,000 goroutines use in Go?
Holding 100,000 goroutines alive at once used about 273 MB of runtime memory (roughly 2.7 KB each) and the whole run, including releasing them and summing a shared total, finished in 568 ms.
Results
| 100,000 goroutines alive at once | ~273 MB (~2.7 KB each) |
|---|---|
| Total run time | 568 ms |
How it was measured
Each goroutine blocks on a channel, then adds to a mutex-protected total after release.
for i := 0; i < 100_000; i++ { go func(i int) { defer wg.Done(); <-block; mu.Lock(); total += i; mu.Unlock() }(i) }Why
Goroutines start with a small stack that grows on demand and are scheduled by the Go runtime, not the OS.
When this does not apply
Cheap is not free. Bound concurrency and watch for leaks.
Environment
MacBook Air (Apple silicon, 8 cores), macOS, Go 1.22. Measured 2026-10-12.
Source: shorts/demo-ticket/go/gor.go in my content-engine repository. Treat any single run as a direction; re-run it on your hardware.
By Josué Barros, senior software engineer (full-stack, data and AI).