2016-08-12 14 views
5

私のプロジェクトではIMemoryCacheを使用しています。私のアプリがキャッシュ内に長生きするオブジェクトをたくさん押し込むとどうなるのだろうか。使用可能なメモリをすべて占有できますか?アプリの最大メモリをグローバルに定義できますか?Asp.netコアでのメモリ使用の制限

答えて

2

これは1年前に書かれたので、私はあなたがMicrosoft.Extensions.Caching.Memoryパッケージのv1.x.xを使用していると仮定するつもりです。

にはv2.x.xのような性質がありませんので、しばらくコードを掘り下げたところで、次のような文書が見つかりました。

https://github.com/aspnet/Caching/blob/rel/1.1.2/src/Microsoft.Extensions.Caching.Memory/MemoryCache.cs#L329

/// This is called after a Gen2 garbage collection. We assume this means there was memory pressure. 
/// Remove at least 10% of the total entries (or estimated memory?). 

OSは、あなたのコードを持つことができるようになりますようしたがって、パッケージはできるだけ多くのメモリを食います。その限界に達すると、キャッシュエントリの圧縮(取り消し)が開始されます。

v2.x.xとすると、SizeLimitプロパティを使用して手動で制限を設定することができます。また、上限がCompactionPercentageに達すると、圧縮の量を設定することもできます。

+0

SizeLimitはサイズをバイト単位で表しますか? – Makla