2009-05-28 76 views
1

所以我試圖向我的Asp.Net應用程序中引入一些緩存。用戶的新數據以大數據集的形式從數據庫中返回。每當用戶請求數據時,我將這個數據集插入到HttpRunTime.Cache。目前,我將緩存時間設置爲2-3小時。這些都是非常大的數據集,我經常用不同的密鑰將它們放入Cache中。我擔心的是這樣做會造成內存泄漏。 Asp.Net會處理Cache中過多的數據並刪除它嗎?另外,當緩存項目被Asp.Net或我使用Cache.Remove()刪除時,僅刪除數據集的引用,還是從內存中收集數據集?有沒有一種情況下,數據集可能會從緩存中「刪除」,但仍然存在於內存中,導致性能問題?如果是這種情況,是否有明確的「垃圾收集」方法?Asp.Net從高速緩存中刪除項目時緩存和內存泄漏

回答

5

放置在緩存中的項目不能保證存在,如果框架在內存中運行緩慢,則框架將清除緩存。您可以指定一個優先級來指示哪些項目應該先自動清除。

至於如果內存將被釋放,只要項目被管理,並且您沒有在應用程序的其他地方保留引用,那麼垃圾收集器將在緩存超時過期後釋放內存(或者手動從緩存中刪除它)。

當然,從緩存中刪除並不能保證物理內存將被釋放,因爲只有在垃圾收集器下次運行時纔會釋放。

+0

那麼有沒有一種方法可以在它讓我失望之前偶爾清楚地釋放記憶? – 2009-05-28 06:31:53