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