在C#下使用Postgresql我有内存泄漏。有简单的方法可以避免它吗? (google告诉我用另一个DB替换Postgres。这是不可能的,我必须连接到现有系统)。
重现内存泄漏:
C#(dot net 4)运行大量更新查询,如下一个代码所示:
using Npgsql;
。 。
class dbCommector
{
private Object lockerObj = new object();
private NpgsqlConnection conn = null;
public dbCommector()
{
conn = new NpgsqlConnection("Server=127.0.0.1;User Id=user;" +
"Password=password;Database=demo;");
conn.Open();
}
public void Close()
{
conn.Close();
}
public void NoAnsExecute(String query)
{
lock (lockerObj)
{
using (NpgsqlCommand cmd = new NpgsqlCommand(query, conn))
{
//If I put here "return", no leakage.
cmd.ExecuteNonQuery();
}
}
}
}
//从这个类中创建一个对象
dbCommector myConnector = new dbCommector();
//然后调用很多下一个查询或类似的:
myConnector,NoAnsExecute ("update table set value=0 where id=1");