В 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
Похожее
19.07.2026
Объединение запросов
Статья объясняет технику объединения запросов на Go с помощью пакета singlefligh...
16.07.2026
mmap или pread
Автор статьи - инженер из VictoriaMetrics. На примере реального движка хранения ...
16.07.2026
TypeScript переписали на Go
Команда Microsoft с помощью AI переписала компилятор TypeScript 7.0 на Go, а не ...
14.07.2026
На 49% быстрее из-за выравнивания
Разбор неожиданной оптимизации в Go: сдвиг массива на 4 байта через добавление p...