繁体   English   中英

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

[英]ODBC leaking memory in c# application

我似乎有内存泄漏。 我在stackoverflow上找到了推荐“使用”方法的帖子,但这似乎无法解决问题。

我正在使用Red Gate内存探查器,该探查器显示非托管内存的增加不断增加。

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

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服务器的连接断开。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM