缓存对象(每个用户)和垃圾收集的含义

时间:2013-08-15 21:22:14

标签: c# caching garbage-collection

当您在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视图页面,但是当请求结束时超出范围。

1 个答案:

答案 0 :(得分:0)

缓存只会在缓存项过期时删除它对缓存项的引用。如果引用也由正在运行的页面保留,则在请求结束之前,缓存项将不符合GC的条件。