EF是否会导致C#中的内存使用过度?

EF是否会导致C#中的内存使用过度?,c#,entity-framework,memory-management,C#,Entity Framework,Memory Management,我有一个用C#和Entity Framework 4.0编写的多线程控制台应用程序。 昨天,当我监控这个程序几个小时时,它使用了大约100MB,但今天早上它变成了500MB。只是想知道EF是否最终会因为缓存而变大? 或者我该怎么刷新它 提前感谢。除非您有有效的理由监视内存使用情况,否则通常没有。当需要内存时,垃圾收集器将启动,并清空未使用的内存 只要您没有将对未使用对象的引用保留在某个位置,在垃圾收集环境中,内存使用就不应该成为一个问题。您如何检查内存使用情况,如果您使用的是任务管理器,那么它就

我有一个用C#和Entity Framework 4.0编写的多线程控制台应用程序。 昨天,当我监控这个程序几个小时时,它使用了大约100MB,但今天早上它变成了500MB。只是想知道EF是否最终会因为缓存而变大? 或者我该怎么刷新它


提前感谢。

除非您有有效的理由监视内存使用情况,否则通常没有。当需要内存时,垃圾收集器将启动,并清空未使用的内存


只要您没有将对未使用对象的引用保留在某个位置,在垃圾收集环境中,内存使用就不应该成为一个问题。

您如何检查内存使用情况,如果您使用的是任务管理器,那么它就不能反映正确的内存使用情况。如果你使用它会更好,也请参见。您还可以尝试查看哪个对象占用内存


尝试在您的数据上下文下禁用
ContextOptions.LazyLoadingEnabled
,看看是否有帮助,但我仍然认为使用内存分析器可以让您清楚地了解应用程序的运行情况

是的,EF将缓存您查询的实体,这可能是一个原因,您可以在dbcontext.config和c中随时关闭它。

也就是说,有很多方法可以保留未使用的引用并防止收集它们。内存探查器可能会有所帮助(例如或)。我担心EF中缓存的对象不会被垃圾收集器收集。一旦您处理了上下文并且不再有实体引用,它们就会被收集。除非您将实体或上下文的引用保留在某个地方(可能不是很明显),否则它们应该被自动处理和收集。这就是为什么我建议使用内存分析器。我的LazyLoadingEnabled设置为true。也许我可以试着调查一下。谢谢