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

问题

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

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

解决

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

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

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

想要解决这个办法,有两种办法。一是手动GC,二是重建map

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

猜你喜欢

转载自www.cnblogs.com/Jun10ng/p/12688285.html