問題
我晚上在思否上瀏覽帖子的時候,看到了這樣一個問題
在golang中的map結構,在刪除鍵值對的時候,並不會真正的刪除,而是標記。那么隨着鍵值對越來越多,會不會造成大量內存被濫用?(先回答下,會的,甚至會引起OOM,解決辦法后續會講)
解決
對這個問題也挺感興趣的,就google了一下,發現以下討論帖
https://github.com/golang/go/issues/20135
在這個issue中,一個uber的老哥,往map中添加了1百萬的數據,后續在增改的時候,經常因為delete操作沒有真正釋放內存而OOM。
想要解決這個辦法,有一種辦法。就是重建map。手動GC也無法縮小。(感謝評論區的提醒)
這兩種辦法本質上都是使map變得更小