cachefactory のインスタンスを作成し、それをもう使用しない場合、オブジェクトの作成中に使用されたメモリは解放されません。これは、cachfactory が複数回作成される可能性のあるすべての Web アプリまたはシナリオに大きな影響を与えます。この症状は、プロセスのメモリ使用量が異常に高くなり、IIS では、割り当てられたメモリをより迅速にオーバーランさせるため、アプリをより頻繁にリサイクルする必要が生じる可能性があります。
次のコードは、約 500MB の増加を示します。つまり、メガバイトのメモリ使用量です!
複製するには、次のコードをアプリに追加します。
Dim CacheFactory1 As CacheFactory = New CacheFactory()
For i As Int32 = 1 To 1 * (10 ^ 4)
CacheFactory1 = New CacheFactory()
CacheFactory1 = Nothing
Next
これには 2 つの回避策しかありません。
- Velocity チームはバグを修正します (そして、私は彼らがそうすると確信しています)
- アプリの静的メソッドで同じ cachefactory オブジェクトを使用し、キャッシュを使用するたびにそれを参照する必要があります。(これは機能しますが、私の意見では最適ではありません。)
また、キャッシング メソッドをラップするために使用できる cachingscope も用意しており、これをまもなく codeplex に投稿します。トランザクション スコープのようにキャッシング メソッドをラップすることができ、ロックと接続を管理します。