kwa*_*sei 4 .net c# memorycache
点网的MemoryCache驱逐何时发生?如何在控制台应用程序中模拟逐出?每当我尝试将对象添加到内存缓存中直到发生逐出时,我都会得到OutofMemoryException。
请参见MemoryCacheElement,如果没有将值传递给NameValueCollection config 构造函数中的值或使用默认实例,那么这就是控制默认行为的因素。
查看的默认设置MemoryCacheElement,它每两分钟检查一次(但是,越接近高压极限,它的运行速度越快)。一旦进入计时器的回调,它将计算百分比以减少MemoryCache,然后MemoryCache.Trim(Int32)使用计算出的百分比进行调用。
在百分比计算中要注意的一件事是,如果未发生Gen 2垃圾回收,则缓存不会尝试自行收缩。
测试控制台程序的运行方式很有可能在第二代收集发生之前就已经用完了所有内存,或者仍然处于最初的两分钟慢速模式下以检查内存压力,然后才能清除项目。
如果您想模拟驱逐,请致电
MemoryCache.Default.Trim(50);
Run Code Online (Sandbox Code Playgroud)
并且这将从默认缓存中撤出一半的缓存。