2016-11-02 11 views
2

私は、System.Web.CachingとSystem.Runtime.Cachingの両方を実装するかなり大きいレガシーアプリケーションを持っています。はい、そうです。サービスを同じアプリケーションプールで実行している可能性があります。System.Web.CachingとSystem.Runtime.Cachingメモリ使用の組み合わせ動作

私の質問は、これらのメモリの限界までどのように対話するのでしょうか?私が読んだことから、MemoryCacheのデフォルトの制限は利用可能なメモリの60%です。私は、より直接的な質問が、同じ60%のSystem.Web.Cachingインスタンス共有をしていると思いますか?

また、100MBに制限されたMemoryCacheの名前付きインスタンスもあります。

私が理解したいことは、System.Web.Cachingがいっぱいになって排出が強制された場合、私のMemoryCacheインスタンスはどうなるのでしょうか?

答えて

1

キャッシュが限界に達すると、最も古い有効期限を持つ最も古いアイテムまたはアイテムを退去し始めます。これは、ポリシーによって異なります。 Web Cacheのメモリー量を設定できます。この投稿を確認する、it explains all of thisすべてのキャッシュは同様の方法で動作します。また、NCacheを見てください。彼らは無料版を持っています。特にWebファームの場合は、キャッシュを使用してさらに多くのことを行うことができます。

あなたはこう質問しました:これらはどのようにメモリの限界まで関わっていますか? - これらは相互作用しません。彼らは、それぞれ別々に行うことを別々に行います。それぞれには限られたリソースがあります。複数のキャッシュではなく1つのキャッシュを使用すると、実際にアイテムをキャッシュするためのリソースが節約されます。

+0

「これらは相互作用しません」とは、奇妙に見えますが、少なくとも問題があるようです。どちらのタイプも、使用可能なメモリの60%をデフォルトとしています。つまり、両方のディスクを使用すると、使用可能なメモリの120%が現在使用可能になっているため、多くのディスクI/Oで終了する可能性があります。私はこの時点でただ一つにコミットする選択肢がありません。これは大きなレガシーアプリケーションなので、私はその両方を考慮する必要があります。 – DuctTaper

+0

@DuctTaper "対話"を定義できます。 - *互いに作用する、または互いに密接に関係する*。これは起こっていない。これらは2つの別々のオブジェクトで、互いに知りません。彼らは独立して働く。彼らはお互いに偶然に影響を与えます。メモリ使用量は、OS、.net、IIS、およびキャッシュ設定によって制限されます。 120%はありません。 OSから.netアプリケーションまで、キャッシュは制限されずに絞り込まれます.RAMを増やすと、これらの制限が大きくなる可能性があります。したがって、あなたの2つのキャッシュは、あなたの.netランニングアプリで利用可能なメモリを共有します。両方が成長し始めると、両方とも商品を追い出し始めるでしょう。 –

+0

@DuctTaper 2つのバルーンを小さな箱に詰め込むとします。あなたは十分にフラットになるまで両者を収縮させなければならないでしょう。しかし、現時点では彼らは仕事をしておらず、飛行も少なく、飛行もできないので効果がありません。キャッシュと同じ - 小さなメモリ=少ないアイテムとより多くの追い出し。そして、32ビットアプリケーションを取る - 状況はさらに悪化する。 64bitでは大きなボックスを得ることができますが、32bitでは小さなボックスに限られます。私は1.5Gハードストップ限界のようなものがあると思う –

関連する問題