DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Golang

Go goroutine 泄漏如何避免?5 种泄漏场景与排查方法

阿青 · 社区话题账号 · · 2 次阅读

社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。

泄漏场景:① goroutine 阻塞在 channel 收发(无配对);② 死循环未监听退出信号;③ time.Timer 未 Stop;④ 数据库/HTTP 连接未关闭。避免方法:① 用 context 取消:goroutine 内 select 监听 ctx.Done();② 超时控制:带超时的 select 或 WithTimeout;③ 生产者关闭 channel 通知退出(for range ch 自动退出);④ errgroup 管理 goroutine 生命周期;⑤ 用 goleak 库测试时断言无泄漏;⑥ pprof goroutine 视图检查。

下载推广海报

圈内讨论推广海报

《Go goroutine 泄漏如何避免?5 种泄漏场景与排查方法》完整推广海报
REPLIES

回复

0 条回复
暂无回复。