-2
我有一個ASP.Net中的「內存泄漏」問題。 我創建了一個與數據庫連接的空白頁面。 內存在頁面訪問時增加,並且不會立即恢復正常!最高峯值內存在1GB!之間,那麼我必須回收IIS中的「池」...我使用Connection.Close()和connection.Dispose()方法,但似乎它們工作正常。 我在網上搜索了更多的靈魂無法找到。ASP.Net應用程序池內存泄漏
有什麼辦法可以解決這個問題,而不必回收池? 感謝分享知識!
這是在其中發生內存泄漏的塊:
SqlConnection cn = new SqlConnection("");
SqlCommand cm = new SqlCommand();
SqlDataReader dr = null;
try
{
cn.Open();
cm.Connection = cn;
cm.CommandTimeout = 600;
cm.CommandText = "";
cm.Parameters.Add("operation", SqlDbType.Int).Value = 1;
cm.Parameters.Add("now", SqlDbType.DateTime).Value = DateTime.Now;
dr = cm.ExecuteReader(CommandBehavior.SingleResult);
while (dr.Read())
{
//blah blah blah...
}
dr.Close();
}
catch (Exception ex)
{
}
finally
{
if (dr != null)
dr.Dispose();
cm.Dispose();
cn.Close();
cn.Dispose();
}
這將是一個更容易使用,如果你在'using'陳述包裹你的CN /平方釐米/ DR,它所有的花哨的東西像關閉/對你例外後處置。另外,如果你告訴它返回單個結果,爲什麼還要使用'while'循環呢?將'while'改爲'if'...並不是說這些都是你的問題,但它會清理你的代碼。 –
我的猜測是你的等等,等等等等等等等等等等等等等等等等等等等等等等等等等。留下所有的對象打開和垃圾收集 – Ewan
首先研究.NET內存模型,你不會感到如此驚訝。 –