我在WCF服务后面使用Entity Framework 4.0。我的问题是程序使用的内存增长很多(从200Mo开始,我在~11Go停止了。
如何管理缓存?我的意思是,我有两个datacontext,其中一个从未用于读取数据,所以我可以禁用缓存吗?
另一方面,我可以指定它可以使用的空间量吗?有没有办法监控这些资源?有没有办法减少资源使用?
谢谢!
答案 0 :(得分:4)
首先你不应该use shared contexts。在结束操作处理之前,为每个WCF请求创建新上下文并配置上下文!如果您需要一些数据缓存,请在EF之外进行。 EF本身不应该用作缓存,也不能控制这种行为。
如果您在IIS中托管服务,则可以通过在AppPool的高级设置中指定专用内存限制来配置AppPool回收。但它只会杀死该AppPool中运行的所有内容。
答案 1 :(得分:1)
可能发生的是每次调用都在创建一个新的上下文。它保留在内存中,直到连接超时,垃圾收集将其删除。