G
Go tests
@golangtests7.9K подп.
3.2Kпросмотров
41.0%от подписчиков
17 декабря 2025 г.
stats🎬 ВидеоScore: 3.5K
🚀 Как Go 1.26 ловит утечки горутин Перед тобой классический пример утечки goroutine, который долгое время было сложно отлавливать автоматически. Проблема возникает, когда: - используются небуферизированные каналы - запускаются goroutine в цикле - происходит ранний return по ошибке В такой ситуации часть goroutine продолжает попытки записи в канал, но получателя уже нет — они зависают навсегда. Раньше такие баги: - проявлялись только под нагрузкой - маскировались как рост памяти или странные тайминги - находились уже в продакшене В Go 1.26 runtime научился детектить такие утечки автоматически, если включено профилирование. func fetchUsers(ids []int) ([]User, error) { ch := make(chan User) for _, id := range ids { go func(id int) { user := fetchUser(id) ch <- user // блокируется навсегда при раннем return }(id) } for range ids { user := <-ch if user == nil { return nil, errors.New("failed") // LEAK: другие goroutine зависли } } return nil, nil } Запуск с детекцией утечек goroutine GOEXPERIMENT=goroutineleakprofile go run main.go Проверка профиля curl http://localhost:6060/debug/pprof/goroutineleak https://www.youtube.com/shorts/Wvimjygw_ys
3.2K
просмотров
1270
символов
Да
эмодзи
Да
медиа

Другие посты @golangtests

Все посты канала →
🚀 Как Go 1.26 ловит утечки горутин Перед тобой классический — @golangtests | PostSniper