Не вызывать сессию NHibernate Закрыть - PullRequest
0 голосов
/ 21 июля 2010

Я смотрю на некоторый код, который, как мне известно, имеет утечку памяти, и я думаю, что знаю почему. тем не мение; Мне любопытно о кровавых деталях.

В начале запроса происходит вызов session.OpenSession (); для того, чтобы получить сеанс IS, но в конце запроса нет сеанса вызова. Close (); и / или сессия. Dispose ();

Какие объекты остаются в памяти? "Сущности" торчат? Какие функции NHibernate теряются? Будут ли эти объекты собирать мусор?

Ответы [ 2 ]

3 голосов
/ 21 июля 2010

Если вы не закроете сеанс, все сущности, на которые есть ссылки, и все вспомогательные структуры данных останутся там до тех пор, пока не будет собран мусор.

Итак, закрытие сеанса должно быть сделано в конце запроса, независимо от того, был он успешным или нет.

0 голосов
/ 21 июля 2010

Вы можете использовать шаблон синглтона

...