首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >. Net MemoryCache逐出

. Net MemoryCache逐出
EN

Stack Overflow用户
提问于 2017-02-01 05:44:11
回答 1查看 2.5K关注 0票数 6

net的MemoryCache驱逐是什么时候发生的?如何在控制台应用中模拟驱逐?每当我尝试将对象添加到内存缓存中,直到发生驱逐时,我都会得到OutofMemoryException。

EN

回答 1

Stack Overflow用户

发布于 2017-02-01 06:47:23

请参见MemoryCacheElement,如果您不将值传递给NameValueCollection config in the constructor或使用默认实例,它将控制默认行为。

查看MemoryCacheElement的默认设置,它每两分钟检查一次(但是它的the closer you are to the high pressure limit速度更快)。一旦进入timer's callback,它将计算要修剪的MemoryCache的百分比,然后使用计算出的百分比调用MemoryCache.Trim(Int32)

the percentage calculation中需要注意的一件事是,如果没有发生第2代垃圾回收,则缓存不会尝试收缩自身。

您的测试控制台程序的运行方式很可能在Gen 2收集发生之前耗尽了所有内存,或者仍然处于初始的两分钟慢模式,以便在清除项目之前检查内存压力。

如果您想要模拟驱逐,只需调用

代码语言:javascript
复制
MemoryCache.Default.Trim(50);

这将从默认高速缓存中逐出一半的高速缓存。

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

https://stackoverflow.com/questions/41968043

复制
相关文章

相似问题

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