在我的应用程序中,我使用ADODB来查询MySQL数据库。这很顺利,但是,ADODB似乎泄漏了很多内存。C#泄漏内存中的ADODB
我通过调用每个执行的查询的close方法来部分修复它。
我发现用这种方法标杆百万查询:
public static int Execute(string query)
{
Connect();
object ret;
lock (_conn)
_conn.Execute(query, out ret, -1);
return (int)ret;
}
一个约10000查询我出的内存后,速度极快。
我想这是因为_conn.Execute的,所以我把它改为:
public static int Execute(string query)
{
Connect();
object ret;
ADODB.Recordset rs;
lock (_conn)
rs = _conn.Execute(query, out ret, -1);
rs.Close();
return (int)ret;
}
现在,这似乎节省了很多,但在执行查询100000后,继续泄漏左右的内存为80MB。
有谁知道如何阻止它泄漏内存,我不需要记录集。我有3个不同的函数,一个用于像这样执行,一个用于执行和返回包装在我自己的类中的记录集,另一个用于执行并返回最后插入的ID,这对INSERT INTO查询很有用。
那么,有谁知道如何阻止泄漏?
编辑:
这是连接()的代码:
private static ADODB.Connection _conn = new ADODB.Connection();
public static bool Connected
{
get { return _conn.State == 1; }
}
public static bool Connect()
{
lock (_conn)
if (!Connected) _conn.Open(Configuration.DB_ConnectionString, "", "", -1);
return Connected;
}
Connect();'做什么? – 2011-03-05 20:14:16
我添加了代码,包括所有相关的东西:) – Aidiakapi 2011-03-05 20:17:22