|
昨天做了一個(gè)自動(dòng)生成Insert 語句的小工具,今天測試發(fā)現(xiàn)存在嚴(yán)重的內(nèi)存泄漏問題,代碼看了好幾遍,沒發(fā)現(xiàn)問題。后來用 .NET Memory Profiler 跟蹤(跟蹤方法見 用 .NET Memory Profiler 跟蹤.NET 應(yīng)用內(nèi)存使用情況--基本應(yīng)用篇) 發(fā)現(xiàn)有數(shù)千個(gè)DataRow 沒有釋放,最后定位是DataTable.NewRow 的問題。
先看一下有問題的代碼
public DataRow GetNextRow()
{
if (_DataReader.Read())
{
DataRow row = _SchemaTable.NewRow();
foreach (DataColumn col in _SchemaTable.Columns)
{
row[col.ColumnName] = _DataReader[col.ColumnName];
}
return row;
}
else
{
return null;
}
}
NET技術(shù):DataTable.NewRow 內(nèi)存泄漏問題,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。