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