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