0

当您将某些内容存储在 ASP.NET 的内置缓存中时,这如何与垃圾收集器一起工作?

例子:

if( not in cache)
{
  List<UserSales> sales = SalesService.GetByUserId(loggedInUser.id);

  InsertToCache(cacheKey, sales);
}
else
{
   // loads from cache
}

所以对于每个用户,我首先检查数据是否在缓存中。

我想知道的是,这对垃圾收集器有什么影响?如果销售对象对某些用户说 200-500 行,那么在这种情况下 GC 将如何表现?

如果我有一个 20 分钟的滑动过期时间,所以它从缓存中删除,只是因为它被删除了,它仍然必须被 GC 正确?

唯一持有对销售的引用的是缓存系统和 mvc 视图页面,但在请求结束时超出了范围。

4

1 回答 1

0

缓存将在过期时简单地删除它对缓存项的引用。如果一个正在运行的页面也持有一个引用,那么在请求结束之前缓存项将不符合 GC 的条件。

于 2013-08-15T21:33:34.580 回答