メモリ使用量に関して、LINQ-To-SQL でいくつかの問題が発生しています。Windows サービスで使用して何らかの処理を行っており、コンテキストから引き戻す大量のデータをループしています。はい - ストアド プロシージャを使用してこれを実行できることはわかっていますが、それが理想的なソリューションとは言えない理由があります。
とにかく、私が基本的に見ているのは、呼び出した後でもメモリが解放されていないことcontext.SubmitChanges()
です。そのため、一度に 100 レコードだけをプルバックしたり、複数のコンテキストを作成してそれらすべてに個別のタスクを実行させたりするなど、あらゆる種類の奇妙なことをしなければならなくなります。同じままにしDataContext
て後で他の呼び出しに使用すると、ますます多くのメモリが消費されます。Clear()
クエリが返す" " 配列を呼び出しvar tableRows
、null に設定して呼び出しSYstem.GC.Collect()
ても、メモリは解放されません。
今、私はあなたDataContexts
がそれらを素早く使用し、素早く処分する方法についていくつか読んだことがありますが、コンテキストにすべてのデータ(または特定のテーブルのすべての追跡データ)をメモリが空いていることを保証する特定のポイント。
メモリが解放されることを保証する手順を知っている人はいますか?