C# 连接堆转储的Fluent Nhibernate内存泄漏

C# 连接堆转储的Fluent Nhibernate内存泄漏,c#,caching,nhibernate,fluent-nhibernate,C#,Caching,Nhibernate,Fluent Nhibernate,我知道2008年发布的查询缓存之前存在Nhibernate问题。我使用的是Fluent NHibernate 1.4.0和NHibernate 3.3.1。我正在运行一个同步程序,它从多个会话打开,并在处理大型数据集时创建多个查询。我正在使用的所有数据结构都是有限长度的。我从CLRProfiler工具中了解到,SessionFactoryImpl类正在变得越来越大 下面是应用程序的内存堆转储 转到处的链接以查看内存堆转储 我在整个应用程序中使用无状态会话,并使用块包装所有内容。我已将my Ses

我知道2008年发布的查询缓存之前存在Nhibernate问题。我使用的是Fluent NHibernate 1.4.0和NHibernate 3.3.1。我正在运行一个同步程序,它从多个会话打开,并在处理大型数据集时创建多个查询。我正在使用的所有数据结构都是有限长度的。我从CLRProfiler工具中了解到,SessionFactoryImpl类正在变得越来越大

下面是应用程序的内存堆转储

转到处的链接以查看内存堆转储

我在整个应用程序中使用无状态会话,并使用块包装所有内容。我已将my Session Factory creator设置为具有以下行

return Fluently.Configure().Database(cfg).Mappings(m => {
            var fluentMappings = m.FluentMappings;

            fluentMappings.Add<UCBPremMap>();
            fluentMappings.Add<UTVSSFXMap>();
        }).Cache(c => {
            c.Not.UseQueryCache();
            c.Not.UseSecondLevelCache();
        }).BuildSessionFactory();
流畅地返回.Configure().Database(cfg).Mappings(m=>{
var fluentMappings=m.fluentMappings;
fluentMappings.Add();
fluentMappings.Add();
}).Cache(c=>{
c、 Not.UseQueryCache();
c、 不是。使用SecondLevelCache();
}).BuildSessionFactory();
但我认为,从我对堆图的解释来看,NHibernate缓存数据结构一直在增长,直到内存耗尽

当试图解析另一个表达式树时,通常也会发生堆栈溢出(我试图最小化数据库调用,有时只能按内容搜索字段,这会创建一个包含1000个where子句的表达式树)


任何帮助都将不胜感激。我的同事在另一个程序中也注意到他的程序出现了OutOfMemory异常,这也表明NHibernate中存在内存泄漏。

这是我在谷歌群组发布的关于同一问题的帖子


我已经解决了使用反射来访问QueryPlanCache中的planCache字段并将哈希表设置为内容大小从128到8的问题。

找到什么了吗?有漏洞吗?我也有类似的问题。