当您在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视图页面,但是当请求结束时超出范围。
答案 0 :(得分:0)
缓存只会在缓存项过期时删除它对缓存项的引用。如果引用也由正在运行的页面保留,则在请求结束之前,缓存项将不符合GC的条件。