首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Web.Caching是否使用LRU算法?

System.Web.Caching是否使用LRU算法?
EN

Stack Overflow用户
提问于 2014-06-04 18:20:58
回答 1查看 164关注 0票数 4

我只是在为我不久前创建的一个名为WebCacheHelper的开源项目编写文档。它是System.Web.Caching中现有缓存功能之上的一个抽象。

当服务器内存不足时,我很难找到用于清除缓存的算法的细节。

我在MSDN上找到了这篇文章

当承载ASP.NET应用程序的Web服务器内存不足时,缓存对象有选择地清除项以释放系统内存。在将项添加到缓存中时,您可以相对于存储在缓存中的其他项为其分配相对优先级。当服务器处理大量请求时,分配较高优先级值的项不太可能从缓存中删除,而分配优先级较低值的项更有可能被删除。

这对我的品味来说还是有点模糊。我想知道在何时清除缓存对象时使用了哪些其他因素。这是上一次访问时间和优先级的结合吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-10 08:17:36

让我们看一下源代码。清除从TrimIfNecessary()类中的CacheSingle方法开始。首先,尝试删除FlushExpiredItems()类的CacheExpires方法中的所有过期项。如果这还不够的话,它就开始在CacheUsage.FlushUnderUsedItems()中迭代“桶”。缓存使用数据/统计数据根据CacheItemPriority划分为“桶”,它们的统计信息/LRU在每个桶中分别处理。有两个迭代通过桶。第一次迭代只删除新添加的项(在最后10秒内)。第二项移除其他项目。它开始从CacheItemPriority.Low桶及其LRU项中删除项。当移除足够多时,它将停止,否则会继续到下一个LRU项和更高优先级的桶中。它不接触CacheItemPriority.NotRemovable项,因为它没有将它们添加到使用桶中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24044784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档