Go 语言编写代码的最大优点之一是能够在轻量级线程,即 Goroutines 中并发运行你的代码。
然而,拥有强大的能力也伴随着巨大的责任。
尽管 Goroutines 非常方便,但如果不小心处理,它们很容易引入难以追踪的错误。
Goroutine 泄露就是其中之一。它在背景中悄悄增长,可能最终在你不知情的情况下使你的应用程序崩溃。
因此,本文主要介绍 Goroutine 泄露是什么,以及你如何防止泄露发生。
我们来看看吧!
什么是 Goroutine 泄露?
当创建一个新的 Goroutine 时,计算机在堆中分配内存,并在执行完成后释放它们。
Goroutine 泄露是一种内存泄露,当 Goroutine 没有终止并在应用程序的生命周期中被留在后台时就会发生。
让我们来看一个简单的例子。
func goroutineLeak(ch chan int) {
data :=