Golang 中,如果 goroutine 持有某些资源(如内存、文件描述符等)但在其生命周期结束时未正确释放这些资源,则可能会发生内存泄漏。这通常是由于 goroutine 在退出时未能正确关闭通道或释放锁而引起的。1. 使用 defer 语句来确保在函数返回之前释放资源2. 避免在 goroutine 中使用全局变量,因为它们可能会在 goroutine 退出时未被正确释放。3. 当使用通道时,请确保在不再需要它们时关闭它们。4. 当使用锁时,请确保在不再需要它们时解锁它们。在 Golang 中内存泄露分为暂时性内存泄露和永久性内存泄露。获取长 slice 中的一段导致长 slice 未释放string 相比切片少了一个容量的 cap 字段,可以把 string 当成一个只读的切片类型。获取长 string 或者切片中的一段内容,由于新生成的对象和老的 string 或者切片共用一个内存空间,会导致老的 string 和切片资源暂时得不到释放,造成短暂的内存泄漏 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/48626.html