MemoryCache和PhysicalMemoryLimit

时间:2014-10-31 07:15:01

标签: c# caching memorycache

我对MemoryCache和PhysicalMemoryLimit有疑问。

例如:

我设置了PhysicalMemoryLimit = 2

我有很多:

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

myobject可以计数超过100000

我将myObject设置为使用唯一键进行缓存。

在某个时间点,缓存将已满并

“如果缓存大小超过指定的限制,则内存缓存实现将删除缓存条目。”

但是在缓存已满之前,其中一个对象在foreach中使用了很长时间。当内存缓存实现删除缓存条目时,该对象将会是什么?

抱歉我的英文。

1 个答案:

答案 0 :(得分:1)

内存中缓存保留与指定密钥关联的缓存对象的引用,以便在需要时可以使用它,也不会被GC收集。

当缓存大小超过指定的限制时,删除缓存条目意味着缓存不再保留对该对象的引用,以便随后可以将其置于下一个垃圾回收中。但是,如果该对象正在用户的逻辑中使用,就像在foreach循环中的情况一样。它不会保留在缓存中,但会在用户代码中提供,直到被引用。