Существует ряд вещей, которые могут предотвратить сбор мусора, даже если вы наберете GC.Collect();
. Например, если другие объекты, которые все еще живы и используются, содержат ссылку на то, что вам больше не нужно, то этот объект будет оставаться живым.
Также не забывайте, что часть используемой памяти будет объектами, которые NHibernate вернул вам для базы данных.