[英]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.