没有调用NHibernate会话关闭

时间:2010-07-21 05:09:25

标签: nhibernate memory-leaks

我正在查看一些我知道有内存泄漏的代码,我想我知道为什么。然而;我很好奇血腥的细节。

在请求开始时,调用session.OpenSession();为了得到一个ISession但在请求结束时没有调用session.Close();和/或session.Dispose();

什么物体留在记忆中? “实体”是否在附近? NHibernate的哪些功能正在丢失?这些对象每次都会收集垃圾吗?

2 个答案:

答案 0 :(得分:3)

如果你没有关闭会话,那里引用的所有实体,以及所有支持数据结构都会一直存在,直到它被垃圾收集。

因此,关闭会话必须在请求结束时完成,无论是否成功。

答案 1 :(得分:0)

您可以使用单身人士模式