所以我试图在我的Asp.Net应用程序中引入一些缓存。以大数据集的形式从DB返回用户的新数据。每当用户请求数据时,我都会将此数据集插入HttpRunTime.Cache
。目前我将缓存时间设置为2-3小时。这些都是非常大的数据集,我用不同的密钥将它们放在Cache中。我担心的是这样做造成的内存泄漏问题。 Asp.Net会在Cache中处理过多的数据并将其删除吗?此外,当Asp.Net或我使用Cache.Remove()
删除缓存的项目时,仅删除了对数据集的引用,或者数据集是否也从内存中进行了垃圾收集?是否存在这样的情况:数据集可能会从缓存中“删除”但仍存在于内存中,从而产生性能问题?如果是这种情况,有没有办法明确地“垃圾收集”它们?
答案 0 :(得分:5)
放入缓存中的项目不能保证在那里,如果内存运行不足,框架会清除缓存。您可以指定优先级以指示应首先自动清除哪些项目。
至于是否释放内存,只要项目被管理,并且您没有在应用程序的其他地方保留引用,垃圾收集器将在缓存超时到期后释放内存(或者您手动删除它来自缓存)。
当然,从缓存中删除并不能保证释放物理内存,因为这只会在下次垃圾收集器运行时发生。