01
Go Slice 导致的内存泄漏:小切片如何拖垮大内存?
为什么一个只剩几个元素的 slice 能让几百 MB 内存迟迟不降?从 GC 的可达性原理出发,拆解「大底层数组被小切片绑架」与「残留指针未清零」两类内存泄漏,并给出 slices.Clone 深拷贝、clear 置零与 slices.Delete 的解法。
WRITING / ENGINEERING NOTES
记录项目中的架构取舍、实现细节与问题复盘。内容来自实际开发过程,而不是技术名词的简单罗列。
主题
归档
为什么一个只剩几个元素的 slice 能让几百 MB 内存迟迟不降?从 GC 的可达性原理出发,拆解「大底层数组被小切片绑架」与「残留指针未清零」两类内存泄漏,并给出 slices.Clone 深拷贝、clear 置零与 slices.Delete 的解法。
从 SliceHeader 结构体出发,讲清 Go slice 的 len 与 cap 边界、append 的扩容与原地改写行为,以及共享底层数组引发的两类经典暗坑,并给出复制与完整切片表达式两种隔离方案。