gpt4 book ai didi

c# - Dot Net MemoryCache 逐出

转载 作者:太空狗 更新时间:2023-10-30 01:01:03 27 4
gpt4 key购买 nike

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com