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

问题描述:

所以我试图向我的Asp.Net应用程序中引入一些缓存。用户的新数据以大数据集的形式从数据库中返回。每当用户请求数据时,我将这个数据集插入到HttpRunTime.Cache。目前,我将缓存时间设置为2-3小时。这些都是非常大的数据集,我经常用不同的密钥将它们放入Cache中。我担心的是这样做会造成内存泄漏。 Asp.Net会处理Cache中过多的数据并删除它吗?另外,当缓存项目被Asp.Net或我使用Cache.Remove()删除时,仅删除数据集的引用,还是从内存中收集数据集?有没有一种情况下,数据集可能会从缓存中“删除”,但仍然存在于内存中,导致性能问题?如果是这种情况,是否有明确的“垃圾收集”方法?Asp.Net从高速缓存中删除项目时缓存和内存泄漏

放置在缓存中的项目不能保证存在,如果框架在内存中运行缓慢,则框架将清除缓存。您可以指定一个优先级来指示哪些项目应该先自动清除。

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

当然,从缓存中删除并不能保证物理内存将被释放,因为只有在垃圾收集器下次运行时才会释放。

+0

那么有没有一种方法可以在它让我失望之前偶尔清楚地释放记忆? – 2009-05-28 06:31:53