Asp.net NHibernate内存泄漏
我的公司有一个ASP.Net应用程序,它的内存不足,并且在我们的客户只进行了几天的活动之后就会抛出内存不足的异常。我能够在我们的测试环境中重现错误,并使用adplus创建了一个挂起转储。当查看堆上最大/最多的对象时,我注意到我们有500000多个NHibernate.SqlCommand.Parameter对象。这不可能是正确的!我们总共实例化了33个SessionFactorys,每个客户端数据库有1个sessionfactory。我们使用的nhibernate版本是2.1.0.4000 我们已禁用二级缓存、查询计划缓存和查询缓存。我们仍然可以在内存转储中看到500000 NHibernate.SqlCommand.ParameterAsp.net NHibernate内存泄漏,asp.net,nhibernate,memory-leaks,Asp.net,Nhibernate,Memory Leaks,我的公司有一个ASP.Net应用程序,它的内存不足,并且在我们的客户只进行了几天的活动之后就会抛出内存不足的异常。我能够在我们的测试环境中重现错误,并使用adplus创建了一个挂起转储。当查看堆上最大/最多的对象时,我注意到我们有500000多个NHibernate.SqlCommand.Parameter对象。这不可能是正确的!我们总共实例化了33个SessionFactorys,每个客户端数据库有1个sessionfactory。我们使用的nhibernate版本是2.1.0.4000 我们
有人见过这种行为吗?我们的应用程序也有类似的问题(Windows 7上的NHibernate 2.1.2.4000、ODP.net 2.111.7.0)。当我们将数据插入数据库时,我们最终会得到一个巨大的内存并处理泄漏:
for (int i=1;i<10000;i++)
{
using (var session = _sessionFactory.OpenSession();
{
var tx = session.OpenTransaction()
// insert a few rows into one table
tx.Commit()
}
}
for(int i=1;i