golang中map的delete操作不会真正释放底层内存


golang精选博文翻译仓库

问题

我晚上在思否上浏览帖子的时候,看到了这样一个问题

在golang中的map结构,在删除键值对的时候,并不会真正的删除,而是标记。那么随着键值对越来越多,会不会造成大量内存被滥用?(先回答下,会的,甚至会引起OOM,解决办法后续会讲)

解决

对这个问题也挺感兴趣的,就google了一下,发现以下讨论帖

https://github.com/golang/go/issues/20135

在这个issue中,一个uber的老哥,往map中添加了1百万的数据,后续在增改的时候,经常因为delete操作没有真正释放内存而OOM。

想要解决这个办法,有一种办法。就是重建map。手动GC也无法缩小。(感谢评论区的提醒)

这两种办法本质上都是使map变得更小


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM