MemoryCache и PhysicalMemoryLimit

У меня вопрос по MemoryCache и PhysicalMemoryLimit.

Например:

Я установил PhysicalMemoryLimit = 2

У меня много:

List<MyObject> myObject = new List<MyObject>();

myobject может иметь более 100000

Я установил myObject для кэширования с уникальным ключом.

В какой-то момент кеш будет заполнен и

«Если размер кеша превышает указанный предел, реализация кеша памяти удаляет записи из кеша».

Но до того, как кеш был заполнен, один из объектов был взят и долгое время использовался в foreach. Когда реализация кеша памяти удалит записи кеша, что будет с этим объектом?

Извините за мой английский.


person Evgeniy Kozlov    schedule 31.10.2014    source источник


Ответы (1)


Кэш в памяти хранит ссылку на кешированный объект, связанный с указанным ключом, чтобы его можно было использовать при необходимости, а также он не собирался сборщиком мусора.

Когда размер кеша превышает указанный предел, удаление записей кеша означает, что кеш больше не содержит ссылку на этот объект, чтобы его можно было удалить в следующей сборке мусора. Однако, если этот объект используется в пользовательской логике, как в вашем случае в цикле foreach. он не останется в кеше, но будет доступен в пользовательском коде до момента ссылки.

person Sameer Shah    schedule 29.11.2014