當您創建cachefactory的實例並且不再使用它時,不會釋放在創建對象期間使用的內存。這將對所有可能多次創建cachfactory的Web應用程序或場景產生重大影響。這種情況的症狀會非常高,內存使用一個進程,而在IIS中,這很可能會導致您的應用程序不得不經常回收,因爲它會更快地溢出其分配的內存。Velocity CTP2嚴重內存錯誤
下面的代碼會顯示增加大約500MB是的,我的意思是兆字節的內存使用量!
要複製把下面的代碼到你的應用程序:
Dim CacheFactory1 As CacheFactory = New CacheFactory()
For i As Int32 = 1 To 1 * (10^4)
CacheFactory1 = New CacheFactory()
CacheFactory1 = Nothing
Next
只有兩個這種解決方法。
- 速度團隊修復了這個bug(我敢肯定,他們會)
- 你需要使用一個靜態方法相同cachefactory對象在你的應用程序,你要使用的緩存每次引用它。 (這個工程,但在我看來並不是最佳)。
我也有一個cachingscope,可以用來包裝你的緩存方法,並會很快發佈在codeplex上。您可以將其封裝在緩存方法中,就像事務範圍一樣,它將爲您管理鎖定和連接。