本想写一篇关于 golang 中 map 底层的文章, 但是发现已经了相当不错的文章 – 字节跳动技术团队 - Golang 中 map 探究 这里只补充一下,缺少的 map 的删除操作
内部数据结构
初始化
map 是一个有"包含内容"的数据结构, 使用之前需要提前初始化, 即调用make
真正是调用源码是 runtime.makemap
获取数据
删除
删除的关键代码
|
|
上述删除代码操作现象
- 当
map
的value
类型中包含引用类型, 删除对应的key
之后, 经过GC就会释放占用的内存 - 当
map
的value
类型不包含引用类型, 删除对应的key
之后, GC无法释放类型
可以查看我自己的实验结果 {{}}
https://ynikl.github.io/blog/golang-memory-analyze-with-runtime/