附加 NHibernate 侦听器导致内存泄漏?

发布于 2024-10-25 16:22:56 字数 590 浏览 1 评论 0原文

我正在使用 Configuration.AppendListeners 作为一些额外的侦听器。使用附加侦听器时,仅在程序结束时才调用析构函数 - 如果没有附加侦听器,则在 System.GC.Collect 上调用析构函数。

Ad 一种解决方法,我实现了 IDisposable,其中调用以下方法:

    private void CleanUpConfigurationListener()
    {
        if (configuration == null) return;
        foreach (NHibernate.Event.ListenerType item in Enum.GetValues(typeof(NHibernate.Event.ListenerType)))
        {
            configuration.SetListener(item, null);  
        }
    }

使用它,再次调用析构函数。

是内存泄漏吗?

由于 Fluent NHibernate (1.2),我正在使用 NH 3.0。

感谢您的回答。

i'm using Configuration.AppendListeners for some addional listeners. With the appened listeners the destructor is only called when the program ends - without the additional listeners the destructor is called on System.GC.Collect.

Ad a workaround I implemented IDisposable where I call following method:

    private void CleanUpConfigurationListener()
    {
        if (configuration == null) return;
        foreach (NHibernate.Event.ListenerType item in Enum.GetValues(typeof(NHibernate.Event.ListenerType)))
        {
            configuration.SetListener(item, null);  
        }
    }

With it, the destructor is called again.

Is it a memory leak?

I'm using NH 3.0 because of Fluent NHibernate (1.2).

Thanks for your answers.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

何以心动 2024-11-01 16:22:56

是我的错。我发现了问题:

代码为每个新的 DAL-Session 对象创建了一个新的 SessionFactory :(

It was my fault. I found the problem:

The code created a new SessionFactory for each new DAL-Session object :(

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文