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