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
深拷贝:复制了值