SQL Server 2008 を使用して Windows Server 2008 でサーバー アプリケーションを実行しています。
カスタム接続プーリングを実装しました (なぜそれを行ったのかはまた別の長い話です)。したがって、リクエストごとに接続を開いたり閉じたりすることはありません。
サーバー アプリケーションは、プールで利用可能な 10 の接続を使用して、1 分間に数千を超える DBCommand を実行します。
コマンドの実行後、接続をクリーニングしていません(何をクリーニングし、閉じて再度開かずにクリーニングする方法がわからないため)、コマンドオブジェクト自体を破棄していません。
サーバー アプリケーションがダウンすると、close メソッドを呼び出してすべての接続を解放します。
ここで、sqlserver の 1 時間または 2 プロセスのテストの後、3Gig のメモリが使用されることを確認しました。その後、サーバー アプリケーションをシャットダウンしても、占有されていたメモリが解放または削減されませんでした (タスク マネージャーとリソース モニターによると)。 sqlserver を使用してメモリを解放します。
以下は私の質問です。
毎回 DBCommand オブジェクトの Dispose を呼び出す必要がありますか? はいの場合、接続オブジェクトに影響が残りますか?
上記の問題は、私が観察したことを引き起こしているか、他の理由もあります。
接続を閉じずにクリーンアップする方法と、DbCommand の実行ごとにクリーンアップする必要があるゴミの種類はありますか。
ありがとうムバシャール