【Go】常见的四个内存泄漏问题

Goroutine没有顺利结束

1、这里更多的是由于channel+for+select导致的,错误的写法导致了发送者或接收者没有发现channel已经关闭,任务已经结束了,却仍然在尝试输入输出https://geektutu.com/post/hpg-exit-goroutine.html

Map的remove方法不会真正的删除某个key,内存会无限增长

不要把map用作全局

timer的错误用法

go 复制代码
//错误用法
for{
	select {
		//这里timer会生成一个新变量,在timer到期之前会一直占用内存
		case <-time.After(duration):
			fmt.Println("process request with", duration)
			}
	}
go 复制代码
//正确用法
idleDelay := time.NewTimer(idleDuration)
defer idleDelay.Stop()
for{
	idleDelay.Reset(idleDuration)
	select {
		case <-idleDelay.C:
			fmt.Println("process request with", duration)
			}
	}

闭包,某个局部变量的指针被外部所引用,导致不能被GC

相关推荐
KD1 天前
设计模式——责任链模式实战,优雅处理Kafka消息
后端·设计模式·kafka
没逻辑1 天前
gocron - 分布式定时任务管理系统
后端
程序猿DD1 天前
人工智能如何改变 Anthropic 的工作方式
java·后端
weixin_462446231 天前
用 Go 快速搭建一个 Coze (扣子)API 流式回复模拟接口(Mock Server)
开发语言·golang·状态模式
桦说编程1 天前
Guava Forwarding系列类详解——装饰器模式实战
java·后端·设计模式
李迟1 天前
Golang实践录:接口文档字段转结构体定义
开发语言·golang
VX:Fegn08951 天前
计算机毕业设计|基于springboot + vue敬老院管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
算法与双吉汉堡1 天前
【短链接项目笔记】Day2 用户注册
java·redis·笔记·后端·spring
Victor3561 天前
Netty(18)Netty的内存模型
后端