← 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 time568 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).