我一直在使用LINQ-to-SQL存在一些問題。我在Windows服務中使用它來做一些處理,並且我正在循環大量從上下文中撤回的數據。是的 - 我知道我可以用存儲過程來做到這一點,但有理由說這是一個不太理想的解決方案。如何避免使用LINQ到SQL的內存泄漏?
無論如何,我基本上看到的是內存不被釋放,即使我打電話context.SubmitChanges()
後。所以我最終不得不做各種奇怪的事情,比如只在時間拉回100條記錄,或者創建幾個上下文,讓他們都做單獨的任務。如果我保留相同的DataContext
並稍後將其用於其他呼叫,則它只會佔用越來越多的內存。即使我在查詢返回給我的「var tableRows
」數組上調用Clear()
,將其設置爲null,並調用SYstem.GC.Collect()
- 它仍然不釋放內存。
現在我已閱讀了一些關於如何快速使用DataContexts
並快速處理它們的方法,但似乎他們應該是強制上下文將所有數據(或其所有跟蹤數據特定的表格)以確保內存是免費的。
任何人都知道哪些步驟可以保證內存被釋放?
注意正如其他先生們所說,在這種情況下使用多個DataContexts可能會更好。但是,由於問題是如何保證在一個上下文中釋放內存,ClearCache()方法更接近答案。 – 2008-09-24 14:43:13