golang OOM分析


curl localhost:8888/debug/pprof/heap >heap.base

sleep 60s

curl localhost:8888/debug/pprof/heap >heap.current

go tool pprof -http localhost:8889 -base heap.base heap.current

 

 

 

定位到方法:99%新生成的對象在這個方法里

查看view->source,發現

 

 

 

 

 

發現問題代碼:itemMap := item 這里做了淺拷貝,又循環了item,導致邊賦值邊循環,循環了很多次,創建了很多對象

 

解決方案:循環遍歷賦值

itemMap := make(map[string]interface{})

for k,v := range item {

  itemMap[k] = v

}

 淺拷貝:只取了地址

=號這個都是淺拷貝,必須循環賦值才是深拷貝

itemMap := make(map[string]interface{})
itemMap = item

深拷貝:復制了值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM