← 返回首页

Channel在什么情况下会引起内存泄漏?

Channel引起内存泄漏最常见的是引起goroutine泄漏从而导致的间接内存泄漏,当goroutine阻塞在channel操作上永远无法退出时,goroutine本身和它引用的所有变量都无法被GC回收。

比如一个goroutine在等待接收数据,但发送者已经退出了,这个接收者就会永远阻塞下去。

或者select语句使用不当,在没有default分支的select中,如果所有case都无法执行,goroutine会永远阻塞。出现内存泄漏