在我的應用程序中,我使用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