以下代码泄漏内存,即使数据库没有返回数据。任何人都可以对此有所了解。 .net分析器应用程序显示罪魁祸首是可数据表数据表内存泄漏
using (OleDbDataAdapter da = new OleDbDataAdapter("select * from external_message where status='P' and pendingthread=" + Thread.CurrentThread.ManagedThreadId, conn))
{
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
DataRow dr = dt.Rows[0];
NotificationService.Logger.Write(Logger.RdvLogLevel.Debug, (uint)Thread.CurrentThread.ManagedThreadId, "GetInputs", "Received Message Id {0} Type {1}", dr["MessageId"].ToString(), dr.Field<string>("TargetType"));
return new DatabaseItem { connection = conn, dataRow = dr };
}
else
{
dt.Dispose();
}
}
”即使数据库没有返回数据,也会泄漏内存“。 – BrokenGlass
@BrokenGlass:谢谢你指出。可能是因为没有调用conn.Dispose() – CharithJ
连接在父方法中是关闭的。我只返回这个连接重用已经打开的连接。 –