次のパターンを使用して、Linq to SQL を使用して SQL Server レコードを更新しています。
List<int> allIds;
using (MyDataContext dc= new MyDataContext())
{
dc.CommandTimeout = 0;
allIds = dc.MyTables.Select(x => x.Id).ToList();
}
Parallel.ForEach(allIds, x => ComputeAndSave(x));
と
ComputeAndSave(int x, MyDataContext dc)
{
var myRecord= dc.MyTables.Select(x => x).Where(x => x.Id == id).FirstOrDefault();
myRecord.Total = myRecord.Total + 1; //some modification(s)
dc.SubmitChanges();
}
アプリケーションの複数の部分で同じパターンを使用して、いくつかのテーブルのすべての行を更新します。そして、これらすべての場合において、SQL Server が使用するメモリはゆっくりと増加し、増加し、増加します。そのメモリをすべて解放する唯一の方法は、SQL Server サービスを停止して再起動することです。ここでメモリリークが発生するのはなぜですか?どうすれば修正できますか?
どうもありがとう!