ConcurrentDictionary 对象持续多长时间?

Sam*_*lly 3 c# asp.net asp.net-mvc concurrentdictionary asp.net-mvc-5

我在 Azure 应用服务上使用 MVC 5、ASP.NET 4.7

我使用 ConcurrentDictionary 对象来保存数据以保存对数据源的多次调用。

关于其行为的几个问题:

1) 一旦填充,它将持续供同一 Web 应用程序的多个用户访问。我对么?因此,只有网站重新启动后的第一个用户才会受到性能影响。

2) 持续多久?是直到另一次池刷新或站点重新启动,还是存在某种形式的非活动超时?

提前致谢。

编辑:

public class myCache
{
    private static readonly ConcurrentDictionary<int, string> myCacheDictionary = new ConcurrentDictionary<int, string>();

    public static async Task populateCache()
Run Code Online (Sandbox Code Playgroud)

Str*_*ior 5

1) 一旦填充,它将持续供同一 Web 应用程序的多个用户访问。我对么?因此,只有网站重新启动后的第一个用户才会受到性能影响。

是的,static关键字意味着只要应用程序在内存中,它就会一直保留,除非您以编程方式将其清除。无论用户、线程、同步上下文等如何,每个请求都将使用相同的实例。

2) 持续多久?是直到另一次池刷新或站点重新启动,还是存在某种形式的非活动超时?

它会一直存在,直到应用程序池刷新或站点重新启动,除非您以其他方式对其进行编程。

MemoryCache如果您将其用于缓存目的,您可能会对该类感兴趣。它将允许您设置策略,以便在特定时间后或检测到内存开始不足时清除其数据。