Go语言在什么情况下会发生内存泄漏 | 您所在的位置:网站首页 › 什么时候会发生内存泄漏现象 › Go语言在什么情况下会发生内存泄漏 |
什么是内存泄漏? 预期很快能被释放的内存由于某些原因生命周期意外地被延长,导致预计能够立即回收的内存却长时间得不到回收,这就是内存泄漏。 Go语言中内存泄漏的原因 goruntine(协程)导致的内存泄漏(最主要的原因)go语言中协程的创建非常简单,导致我们很多时候只关心协程的代码功能实现,而忽略了协程什么时候结束退出的问题。如果协程在执行时被阻塞而无法退出,就会导致协程的内存泄漏。一个协程的最少占用为2k的内存,在高并发场景下,如果存在大量的协程内存泄漏,则会导致系统严重的内存泄漏。 func finishReq(timeout time.Duration) r ob{ ch := make(chan ob) // ch := make(chan ob,1) go func() { result := fn() ch |
CopyRight 2018-2019 实验室设备网 版权所有 |