Mr.*_*ble 4 asp.net-mvc memory-leaks castle-windsor inversion-of-control
我有一个ASP.NET MVC应用程序,它使用Castler Windsor IoC基于每个Web请求创建一个Linq2SQL datacontext.
由于某种原因我不完全理解,每次创建一个新的datacontext(在每个Web请求上)大约8k的内存被占用而不被释放 - 这不可避免地导致OutOfMemory异常.
如果我强制垃圾收集,则释放内存.
我的datacontext类非常简单:
public class DataContextAccessor : IDataContextAccessor
{
private readonly DataContext dataContext;
public DataContextAccessor(string connectionString)
{
dataContext = new DataContext(connectionString);
}
public DataContext DataContext { get { return dataContext; } }
}
Run Code Online (Sandbox Code Playgroud)
用于实例化的Windsor IoC webconfig如下所示:
<component id="DataContextAccessor"
service="DomainModel.Repositories.IDataContextAccessor, DomainModel"
type="DomainModel.Repositories.DataContextAccessor, DomainModel"
lifestyle="PerWebRequest">
<parameters>
<connectionString>
...
</connectionString>
</parameters>
</component>
Run Code Online (Sandbox Code Playgroud)
有谁知道问题是什么,以及如何解决它?
L2S DataContext实现了IDisposable.您的接口也必须实现它,并调用DataContext.Dispose(),以便Windsor知道有资源要处置.
顺便提一下温莎/ IDisposable问题:http : //www.jeremyskinner.co.uk/2008/05/03/aspnet-mvc-controllers-windsor-and-idisposable/ http://www.nablasoft.com/ Alkampfer/p = 105
| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |