我正在查看一些我知道有内存泄漏的代码,我想我知道为什么。然而;我很好奇血腥的细节。
在请求开始时,调用session.OpenSession();为了得到一个ISession但在请求结束时没有调用session.Close();和/或session.Dispose();
什么物体留在记忆中? “实体”是否在附近? NHibernate的哪些功能正在丢失?这些对象每次都会收集垃圾吗?
答案 0 :(得分:3)
如果你没有关闭会话,那里引用的所有实体,以及所有支持数据结构都会一直存在,直到它被垃圾收集。
因此,关闭会话必须在请求结束时完成,无论是否成功。
答案 1 :(得分:0)
您可以使用单身人士模式