编程语言
首页 > 编程语言> > c# – Dot Net MemoryCache Eviction

c# – Dot Net MemoryCache Eviction

作者:互联网

dot net的MemoryCache何时被驱逐?如何在控制台应用程序中模拟驱逐?每当我尝试将对象添加到内存缓存中直到驱逐发生时,我会得到OutofMemoryException.

解决方法:

如果未将值传递给NameValueCollection配置in the constructor或使用默认实例,请参见MemoryCacheElement,即控制默认行为的内容.

查看MemoryCacheElement的默认值,它每两分钟检查一次(但它确实更快the closer you are to the high pressure limit).一旦进入timer’s callback,它将计算删除MemoryCache的百分比,然后使用计算的百分比调用MemoryCache.Trim(Int32).

the percentage calculation中要注意的一件事是,如果没有发生Gen 2垃圾收集,缓存不会尝试缩小自身.

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

如果你想模拟驱逐只是打电话

MemoryCache.Default.Trim(50);

这将从默认缓存中驱逐一半缓存.

标签:c,net,memorycache
来源: https://codeday.me/bug/20190608/1197894.html