0

次のパターンを使用して、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 サービスを停止して再起動することです。ここでメモリリークが発生するのはなぜですか?どうすれば修正できますか?

どうもありがとう!

4

1 に答える 1

3

SQL Server は、使用可能なすべてのメモリを使用することになっています。ヘッドレスサーバーで実行することになっています。

SSMS で、サーバー プロパティを開き、適切な量の最大サーバー メモリを設定します。

于 2012-06-26T17:17:29.733 に答える