EF会导致C#内存使用过多吗?

时间:2012-05-30 05:40:31

标签: c# entity-framework memory-management

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

提前致谢。

3 个答案:

答案 0 :(得分:0)

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

只要您不在某处保留对未使用对象的引用,就不应该在垃圾回收环境中关注内存使用情况。

答案 1 :(得分:0)

如何检查内存使用情况,如果使用的是任务管理器,则它不能反映正确的内存使用情况。如果您使用some memory profiler for .Net会更好,另请参阅What Are Some Good .NET Profilers?。您还可以尝试dotTrace查看哪个对象占用内存。

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

答案 2 :(得分:0)

是的,EF将缓存您查询的实体,也许这是一个原因,您可以在dbcontext.config中关闭它并且c任何影响。