所以我在 go 中编写了一个守护进程来处理大约 80 万个文档,但我遇到了内存不足的问题。
从我从 mongodb 获取文档时看到的情况来看,每次循环都会增加内存使用量。
func main() {
session, err := mgo.Dial("localhost")
if err != nil { panic(err) }
defer session.Close()
subscriptionsC = session.DB("sm").C("subscriptions")
subscriptions := []Subscription{}
for {
subscriptions = GetSubscriptions()
另一个功能是:
func GetSubscriptions()([]Subscription) {
result := []Subscription{}
err := subscriptionsC.Find(nil).Prefetch(0.0).All(&result)
if err != nil { Log("signups_err", err.Error() + "\n") }
return result
}
我不知道它是否在每个循环中重新声明数组或究竟发生了什么。
任何帮助将不胜感激。