@usrと私は、 .NET がアイドル状態の開いている接続を清掃するかどうかについて、別の質問で意見の相違がありますが、保持された参照は維持されます。
ドキュメントに基づいてSQLConnection
、物理接続が一定期間アイドル状態である場合、オブジェクト参照が保持されたままであっても、一定期間後に再利用されると主張しています。
usr は、これは起こらないと主張しており、参照がなくなった接続のみを回収します。これは接続プーリングの信頼性を低下させ、トランザクションに大混乱を引き起こすという彼の主張です。
認めますが、文書は保持された参照の問題について曖昧です。
推測だけでなく、これに関する信頼できる回答を探しています。いずれかのケースを実験して証明した人か、内部の仕組みを知っている人です。
それで、それはどれですか?
編集:
ここでの混乱は、「クローズド」という用語にあると思います。事実と思われるのは、ドキュメントが物理接続を閉じることをプールからの接続の「削除」と呼んでいることです。「閉じる」とは、開いている物理接続を解放してプールに戻し、再利用することを指します。
開いている接続を中止することはできますが、クライアント アプリによってまだ開かれている場合、プーラーがこれを無効としてマークするかどうかは不明です (つまり、クライアント アプリは、中止された接続でまだ close を呼び出していません)。プール数の一部として。