我有一个问题要问MemoryCache和PhysicalMemoryLimit。
例如:
我设置PhysicalMemoryLimit =2
我有很多:
List<MyObject> myObject = new List<MyObject>();我的对象可以有更多的100000
我将myObject设置为具有唯一密钥的缓存。
在某个时间点,缓存将满,并且
“如果缓存大小超过指定的限制,则内存缓存实现将删除缓存项。”
但是在缓存被填满之前,有一个对象在很长一段时间内都是被占用和使用的。当内存缓存实现移除缓存项时,该对象将如何处理?
对不起我的英语。
发布于 2014-11-29 18:35:19
内存中的缓存保持与指定键相关联的缓存对象的引用,以便在需要时可以使用它,并且GC也不会收集它。
当缓存大小超过指定的限制时,删除缓存项意味着缓存不再保留对该对象的引用,从而可以在下一次垃圾收集中将其释放。但是,如果在用户的逻辑中使用该对象,就像在foreach循环中一样。它不会停留在缓存中,但将在用户代码中使用,直到引用为止。
https://stackoverflow.com/questions/26669314
复制相似问题