- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
dot net 的 MemoryCache 驱逐发生在什么时候?如何在控制台应用程序中模拟驱逐?每当我尝试将对象添加到内存缓存直到发生逐出时,我都会得到 OutofMemoryException。
最佳答案
参见 MemoryCacheElement
,如果您不将值传递给 NameValueCollection 配置
in the constructor,这就是控制默认行为的原因或者您使用默认实例。
查看 MemoryCacheElement
的默认值,它每两分钟检查一次(但速度确实更快 the closer you are to the high pressure limit )。一旦进入 timer's callback它将计算从 MemoryCache 中删除的百分比,然后将调用 MemoryCache.Trim(Int32)
使用计算出的百分比。
在the percentage calculation中需要注意一件事,如果没有发生第 2 代垃圾回收,则缓存不会尝试自行收缩。
很有可能您的测试控制台程序运行的方式在第 2 代收集发生之前耗尽了所有内存,或者仍处于初始的两分钟慢速模式以在清除项目之前检查内存压力出。
如果您想模拟驱逐,只需调用
MemoryCache.Default.Trim(50);
这将从默认缓存中逐出一半缓存。
关于c# - Dot Net MemoryCache 逐出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41968043/
我们配置了为 1200(20 分钟),但缓存在缓存创建时间一分钟后自动被逐出。 有人可以告诉我如何使缓存在指定的时间段内有效吗? 最佳答案 下面 hazelcast.xml 中的代码片段将“simpl
dot net 的 MemoryCache 驱逐发生在什么时候?如何在控制台应用程序中模拟驱逐?每当我尝试将对象添加到内存缓存直到发生逐出时,我都会得到 OutofMemoryException。 最
这是我的守护进程 apiVersion: apps/v1 kind: DaemonSet metadata: name: nginx spec: selector: matchLabe
我收到以下异常: java.lang.IllegalStateException: Session/EntityManager is closed at org.hibernate.inter
我正在使用 Google Guava CacheBuilder创建一个 Cache实例。我的代码如下所示: return CacheBuilder.newBuilder() .
我是一名优秀的程序员,十分优秀!