2009-05-28 21 views
1

私はAsp.Netアプリケーションにキャッシュを導入しようとしています。ユーザーの新しいデータが大きなデータセットの形式でDBから返されます。ユーザーがデータを要求するたびに、このデータセットをHttpRunTime.Cacheに挿入します。現時点では、キャッシュ時間を2〜3時間に設定しています。これらは実際には大きなデータセットであり、私はそれらを非常に頻繁に異なるキーでキャッシュに入れます。私が心配しているのは、これを行うことによるメモリリークの影響です。 Asp.Netはキャッシュ内の余分なデータを処理して削除しますか?また、キャッシュされたアイテムがAsp.NetまたはCache.Remove()を使用して私によって削除された場合、削除されたデータセットへの参照のみですか、またはデータセットもメモリからガベージコレクションされていますか?データセットがキャッシュから「削除」されるかもしれないが、パフォーマンス上の問題を引き起こすメモリ内にまだ存在するシナリオがありますか?この場合、明示的に 'ガベージコレクト'する方法はありますか?Asp.Netキャッシュからアイテムを削除するときのキャッシュとメモリリーク

答えて

5

キャッシュに置かれたアイテムは、メモリに足りなくなった場合にキャッシュをクリアするため、キャッシュ内に置くことは保証されません。優先順位を指定すると、最初に自動的にクリアする項目を指定できます。

メモリが解放されるかどうかは、アイテムが管理されている限り、アプリケーション内の別の場所で参照を保持していない場合、キャッシュタイムアウトが満了するとガベージコレクタはメモリを解放しますキャッシュから削除します)。

もちろん、キャッシュから削除しても、物理メモリが解放されることは保証されません。これは、次にガベージコレクタが実行されるときにのみ発生するためです。

+0

メモリを解放する前に明示的にメモリを解放する方法はありますか? –

+0

メモリが少なくなってキャッシュにアイテムがある場合、ガベージコレクタが起動するメモリが少ないため、アイテムは自動的に削除される必要はありません。 – Tetraneutron

+0

Ok。したがって、.Net Frameworkはキャッシュがメモリの問題を決して起こさないことを保証します。 –

関連する問題