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