В Go 1.27 в runtime/pprof добавляется встроенный детектор утечек горутин, принятый из предложения Uber.
В отличие от uber-go/goleak, который работает только в тестах и дает ложные срабатывания на живом сервере, новый профиль goroutineleak через сборщик мусора доказывает, что горутина навсегда заблокирована когда канал/лок недостижим ни для одной работающей горутины, гарантируя отсутствие ложных срабатываний.
Профиль доступен через стандартные четыре способа: вызов pprof.Lookup("goroutineleak").WriteTo(...) из кода, в тестах с самописными verifyNone/verifyTestMain, по HTTP через /debug/pprof/goroutineleak и через go tool pprof.
При этом есть нюанс - детектор не ловит все возможные утечки. Некоторые горутины могут оставаться незамеченными, если их канал формально достижим через глобальные переменные или локальные переменные работающих горутин, хотя фактически он никогда не будет разблокирован.
29.06.2026
Похожее
26.06.2026
Мидделвари лимитеров
При использовании цепочки мидлварей, которые выполняют какие-то ограничения, в G...
23.06.2026
Рефлексия
Статья о том, как устроен пакет reflect в Go. Он, кстати, не вычисляет как-то хи...
22.06.2026
Зеро аллокации
Все мы знаем, что пустая структура struct{} в Go действительно занимает ноль бай...
16.06.2026
Уровни микроархитектуры amd64
Возможно вы слышали про уровни микроархитектуры. Каждый уровень включает в себя ...