我在使用 LINQ-To-SQL 时遇到了一些关于内存使用的问题。我在 Windows 服务中使用它来进行一些处理,并且我正在循环访问从上下文中拉回的大量数据。是的 - 我知道我可以使用存储过程来做到这一点,但有一些原因表明这不是一个理想的解决方案。
无论如何,我看到的基本上是即使在我调用之后内存也没有被释放context.SubmitChanges()
。所以我最终不得不做各种奇怪的事情,比如一次只拉回 100 条记录,或者创建多个上下文并让它们都执行单独的任务。如果我保持相同DataContext
并稍后将其用于其他调用,它只会占用越来越多的内存。即使我调用查询返回给我Clear()
的 " " 数组,将其设置为 null,然后调用- 它仍然不会释放内存。var tableRows
SYstem.GC.Collect()
现在我已经阅读了一些关于如何快速使用DataContexts
并快速处理它们的内容,但似乎它们应该是一种强制上下文转储其所有数据(或特定表的所有跟踪数据)的方法一定要保证内存是空闲的。
任何人都知道哪些步骤可以保证内存被释放?