C# 应用程序中的 ODBC 泄漏内存



我似乎有内存泄漏。我在堆栈溢出上找到了一篇推荐"使用"方法的帖子,但这似乎并不能解决问题。

我正在使用红门内存分析器,它显示非托管内存不断增加。

这是我用来测试的简单应用程序:

namespace TimerDebug
{
public partial class TimerDebug : ServiceBase
{
    public TimerDebug()
    {
        InitializeComponent();
    }
    protected override void OnStart(string[] args)
    {
         // Create Timer
        Timer MyTimer = new Timer(500);
        MyTimer.Elapsed += MyTimer_Elapsed;
        // Start Timer
        MyTimer.Start();
    }
    void MyTimer_Elapsed(object sender, ElapsedEventArgs e)
    {
        using (var C = new OdbcConnection("Dsn=MyFireReport;"))
        {
            C.Open();
        }
        OdbcConnection.ReleaseObjectPool();
    }
    protected override void OnStop()
    {
    }
}
}

有人知道如何解决这个问题吗?谢谢。

OdbcConnection.ReleaseObjectPool();

造成这种情况的原因。我在不断增加句柄和内存泄漏方面遇到了一些严重的问题,这导致 DEP 关闭了我的软件。SQLClient 中的模拟也可以观察到同样的问题,甚至在使用此语句之前关闭或释放连接也无济于事。

我已将OdbcConnection.ReleaseObjectPool();保留为仅在我的情况下作为与 Oracle 服务器的连接已损坏的危急情况下使用。

目前我已经删除了这些,该软件已经稳定运行了一个多星期。

相关内容

  • 没有找到相关文章

最新更新