【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

相关推荐
盖世英雄酱581361 小时前
java深度调试【第三章内存分析和堆内存设置】
java·后端
007php0071 小时前
京东面试题解析:同步方法、线程池、Spring、Dubbo、消息队列、Redis等
开发语言·后端·百度·面试·职场和发展·架构·1024程序员节
程序定小飞1 小时前
基于springboot的电影评论网站系统设计与实现
java·spring boot·后端
码事漫谈1 小时前
高性能推理引擎的基石:C++与硬件加速的完美融合
后端
码事漫谈1 小时前
C++与边缘AI:在资源荒漠中部署智能的工程艺术
后端
光头闪亮亮2 小时前
curl库应用-c++客户端示例及golang服务端应用示例
c++·go
绝无仅有2 小时前
腾讯面试文章解析:MySQL慢查询,存储引擎,事务,结构算法等总结与实战
后端·面试·github
-芒果酱-2 小时前
对中兴光猫zteOnu.exe项目的简单分析(提供下载地址)
go