2009-01-11 60 views
0

當您創建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 

只有兩個這種解決方法。

  1. 速度團隊修復了這個bug(我敢肯定,他們會)
  2. 你需要使用一個靜態方法相同cachefactory對象在你的應用程序,你要使用的緩存每次引用它。 (這個工程,但在我看來並不是最佳)。

我也有一個cachingscope,可以用來包裝你的緩存方法,並會很快發佈在codeplex上。您可以將其封裝在緩存方法中,就像事務範圍一樣,它將爲您管理鎖定和連接。

回答

0

那麼問題在哪裏?您應該提交該錯誤,不要在此發佈,因爲Velocity團隊很可能會監控Microsoft Connect中的錯誤。