我有一个以静态方法提供服务的Silverlight应用程序的代码:
public static void mymethod(){
DomainContext context = new DomainContext();
var q = context.GetMyEntitiesQuery().Where(x => x.Name == name );
context.Load<MyEntity>(q, LoadBehavior.RefreshCurrent,
(p) =>
{
if (!p.HasError)
{
//......
}
}, null);
}
工作正常。但每当我调用这种方法时,对于浏览器进程,内存将增加约3M,并且它永远不会被释放。
如何为这种情况释放内存?
答案 0 :(得分:0)
您应该尽可能少的DomainContext实例。也许从调用者传递上下文
Thing.mymethod(context);
或保留静态实例
public static class Thing
{
DomainContext _Context = new DomainContext();
public static void mymethod()
{
var q = _context.GetMyEntitiesQuery().Where(x => x.Name == name );
...
}
}
您创建的每个实例都可能会粘在一起并造成内存泄漏。