2011-01-04 15 views
3

私はキャッシュのように動作するオブジェクトを持っています。必要に応じて、使用可能なメモリ全体を埋めることができます。メモリ不足の状況の処理

私は、必要に応じてOSにメモリを戻すことができます。したがって、他の割り当てに問題がある場合、OutOfMemory例外で失敗する前にVM(またはGCまたは誰でも)が自分の「キャッシュ」に縮小を依頼する必要があります。

C#でどうすればいいですか?

答えて

9

車輪を改造する代わりにbuilt-in Cacheを使用することをお勧めします。このような状況は自動的に処理されます。メモリが不足すると優先度に基づいてアイテムが期限切れになります。また、非常に拡張性があり、memcachedのような一般的なプロバイダで簡単に配布することができます。

System.Runtime.Cachingは、.NET 4.0でのみ使用できます。その他のキャッシュは、Enterpriseライブラリ、System.Web.Caching、Velocityなどの旧バージョンで利用できます。

+1

+1 ...特にホイールが円形でない場合があります。 –

+1

注:System.Runtime.Cachingは.NET Framework 4でのみ使用できます。他のキャッシュは以前のバージョンで利用できます。たとえば、エンタープライズライブラリ、 System.Web.Caching。 – Polyfun

+0

ベロシティに名前を付けることができます(これは現在、マイクロソフトアプリケーションサーバーの一部です - appFabric) –

0

設定可能な最大キャッシュサイズはどのくらいですか。キャッシュがmaxに達すると、その中から最も古いアイテムが削除されます。最大値は、キャッシュ内の最大項目、最大メモリ使用量など、キャッシュに合った意味で定義する必要があります。

0

非常に興味深い質問です。 WeakReferencesでプレイしようとしましたか?それはまさにあなたが必要としているようです。

0

オブジェクトを限られた時間キャッシュに保持し、組み込みキャッシュを使用することをお勧めします。

関連する問題