因此,我尝试在我的Asp.Net应用程序中引入一些缓存。用户的新数据以大型数据集的形式从DB返回。每当用户请求数据时,我都会将此数据集插入到HttpRunTime.Cache中。目前,我将他们的缓存时间设置为2-3小时。这些都是非常大的数据集,我经常使用不同的键将它们放在缓存中。我担心的是这样做会导致内存泄漏。Asp.Net会处理缓存中过多的数据并将其删除吗?另外,当Asp.Net或我使用Cache.Remove()删除缓存项时,是否只删除了对数据集的引用,还是从内存中对数据集进行了垃圾回收?是否存在这样的情况:数据集可能会从缓存中“移除”,但仍然存在于内存中,从而产生性能问题?如果是这种情况,有没有办法显式地“垃圾回收”它们?
发布于 2009-05-28 05:44:23
放在缓存中的项目不能保证在那里,如果框架运行时内存不足,它将清除缓存。您可以指定优先级,以指示应首先自动清除哪些项目。
至于是否释放内存,只要管理这些项,并且您自己没有在应用程序的其他位置保留引用,垃圾收集器将在缓存超时后释放内存(或者您手动将其从缓存中删除)。
当然,从缓存中删除并不能保证物理内存会被释放,因为只有在垃圾收集器下次运行时才会释放物理内存。
https://stackoverflow.com/questions/919334
复制相似问题