【问题标题】:MemoryCache and PhysicalMemoryLimitMemoryCache 和 PhysicalMemoryLimit
【发布时间】:2014-10-31 07:15:01
【问题描述】:

我有一个关于 MemoryCache 和 PhysicalMemoryLimit 的问题。

例如:

我设置 PhysicalMemoryLimit = 2

我有很多:

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

myobject 可以有更多的计数 100000

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

在某个时间点缓存会被填满

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

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

对不起我的英语。

【问题讨论】:

    标签: c# caching memorycache


    【解决方案1】:

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

    当缓存大小超过指定限制时,删除缓存条目意味着缓存不再持有对该对象的引用,以便可以在下一次垃圾回收中处理它。但是,如果该对象正在用户的逻辑中使用,例如您在 foreach 循环中的情况。它不会保留在缓存中,但会在用户代码中可用,直到被引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 2013-01-31
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多