2016-08-12 3 views
5

В моем проекте используется IMemoryCache. Интересно, что произойдет, если мое приложение выталкивает много долгоживущих объектов в кеш. Может ли он занять всю доступную память? Могу ли я глобально определить максимальную память для приложения?Ограничение использования памяти в Asp.net Core

ответ

2

Это было написано год назад, поэтому я собираюсь предположить, что вы используете v1.x.x пакета Microsoft.Extensions.Caching.Memory.

Поскольку в MemoryCacheOptions не существует SizeLimit, то после копания в коде на некоторое время я нашел следующую строку документации.

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?). 

Таким образом, пакет будет съедать столько памяти, сколько ОС позволит ваш код, чтобы иметь. Когда он достигнет этого предела, он начнет уплотнять (вытеснять) записи кэша.

С помощью v2.x.x вы можете установить лимит вручную, используя свойство SizeLimit, и вы можете даже установить размер уплотнения при достижении предела CompactionPercentage.

+0

Does SizeLimit означает размер в байтах? – Makla

Смежные вопросы