从Cache中删除项目时,Asp.Net缓存和内存泄漏

Mal*_*har 1 asp.net caching memory-leaks asp.net-2.0 .net-2.0

所以我试图在我的Asp.Net应用程序中引入一些缓存.以大数据集的形式从DB返回用户的新数据.每当用户请求数据时,我都会将此数据集插入到HttpRunTime.Cache.目前我将缓存时间设置为2-3小时.这些都是非常大的数据集,我用不同的密钥将它们放在Cache中.我担心的是这样做造成的内存泄漏问题.Asp.Net会在Cache中处理过多的数据并将其删除吗?此外,当Asp.Net或我使用删除缓存的项目时Cache.Remove(),仅删除对数据集的引用,或者数据集是否也从内存中进行了垃圾收集?是否存在这样的情况:数据集可能会从缓存中"删除"但仍存在于内存中,从而产生性能问题?如果是这种情况,有没有办法明确地"垃圾收集"它们?

Tet*_*ron 5

放入缓存中的项目不能保证在那里,如果内存运行不足,框架会清除缓存.您可以指定优先级以指示应首先自动清除哪些项目.

至于是否释放内存,只要项目被管理,并且您没有在应用程序的其他地方保留引用,垃圾收集器将在缓存超时到期后释放内存(或者您手动将其从内存中删除)高速缓存).

当然,从缓存中删除并不能保证释放物理内存,因为这只会在下次垃圾收集器运行时发生.