所以我編寫了一個守護進程,用於處理大約800k文件,並且出現內存不足問題。致命錯誤內存不足
從我在從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的結果。 – elithrar
會話緩存結果有可能嗎?作爲測試,您可以嘗試通過循環在每次運行時關閉/重新創建您的subscriptionsC對象。 –