推荐goleak的背景
goroutine作为golang并发实现的核心组成部分,非常容易上手使用,但却很难驾驭得好。我们经常会遭遇各种形式的goroutine泄漏,这些泄漏的goroutine会一直存活直到进程终结。它们的占用的栈内存一直无法释放、关联的堆内存也不能被GC清理,系统的可用内存会随泄漏goroutine的增多越来越少,直至崩溃!
goroutine的泄漏通常伴随着复杂的协程间通信,代码评审和常规的单元测试通常更专注于业务逻辑正确,很难完全覆盖goroutine泄漏的场景;而pprof等性能分析工具更多是作用于监控报警/故障之后的复盘。我们需要一款能在编译部署前识别goroutine泄漏的工具,从更上游把控工程质量。
goleak(