问题

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

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

解决

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

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

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

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