gpt4 book ai didi

database - 如何使用 LINQ-To-SQL 避免内存泄漏?

转载 作者:太空狗 更新时间:2023-10-30 01:40:16 25 4
gpt4 key购买 nike

我在 LINQ-To-SQL 内存使用方面遇到了一些问题。我在 Windows 服务中使用它来进行一些处理,并且循环遍历从上下文中提取的大量数据。是的 - 我知道我可以使用存储过程来做到这一点,但有一些原因表明这不是一个理想的解决方案。

无论如何,我看到的基本上是即使在我调用 context.SubmitChanges() 之后内存也没有被释放。所以我最终不得不做各种奇怪的事情,比如一次只提取 100 条记录,或者创建多个上下文并让它们都执行单独的任务。如果我保留相同的 DataContext 并稍后将其用于其他调用,它只会占用越来越多的内存。即使我在查询返回给我的“var tableRows”数组上调用 Clear(),将其设置为 null,然后调用 SYstem.GC.Collect () - 它仍然没有释放内存。

现在我已经阅读了一些关于如何快速使用 DataContexts 并快速处理它们的内容,但它们似乎应该是一种强制上下文转储其所有数据(或特定表的所有跟踪数据)在特定点以保证内存是空闲的。

有谁知道哪些步骤可以保证释放内存?

最佳答案

DataContext 跟踪它曾经获取的所有对象。在垃圾收集之前它不会释放它。此外,由于它实现了 IDisposable,您必须调用 Dispose 或使用 using 语句。

正确的做法是:

using(DataContext myDC = new DataContext)
{
// Do stuff
} //DataContext is disposed

关于database - 如何使用 LINQ-To-SQL 避免内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/123057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com