Итак, я написал демон на ходу, который обрабатывает около 800 тысяч документов, и у меня возникла проблема с нехваткой памяти.
Из того, что я видел при получении документов из 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
}
Я не знаю, переопределяет ли он массив с каждым циклом или что именно происходит.
Любая помощь будет принята с благодарностью.
for
является бесконечным циклом и просто собирает результаты из Mongo на каждой итерации. - person elithrar   schedule 07.01.2014