MemoryCache и PhysicalMemoryLimit

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

Например:

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

У меня много:

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

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

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

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам