MemoryCache и PhysicalMemoryLimit
У меня есть вопрос к MemoryCache и PhysicalMemoryLimit.
Например:
Я установил PhysicalMemoryLimit = 2
У меня много:
List<MyObject> myObject = new List<MyObject>();
myobject может иметь больше 100000
Я установил myObject для кеширования с уникальным ключом.
В какой-то момент времени кэш будет заполнен и
"Если размер кэша превышает указанный предел, реализация кэша памяти удаляет записи кэша".
Но до того, как кеш был заполнен, один из объектов долгое время брался и использовался в foreach. Когда реализация кэша памяти удаляет записи кэша, что будет с этим объектом?
Извините за мой английский.
1 ответ
Кэш в памяти хранит ссылку на кешированный объект, связанный с указанным ключом, так что он может использоваться при необходимости, а также не будет собираться GC.
Когда размер кэша превышает указанный лимит, удаление записей кэша означает, что кэш больше не содержит ссылку на этот объект, чтобы его можно было удалить в следующей сборке мусора. Однако, если этот объект используется в логике пользователя, как в вашем случае в цикле foreach. он не останется в кеше, но будет доступен в пользовательском коде, пока не будет передан.