質問

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つの回避策しかありません。

  1. Velocityチームがバグを修正します(間違いなく修正されると思います)
  2. アプリの静的メソッドで同じcachefactoryオブジェクトを使用し、キャッシュを使用するたびに参照する必要があります。 (これは機能しますが、私の意見では最適ではありません。)

また、キャッシングメソッドをラップするために使用できるキャッシングスコープもあり、これをcodeplexにすぐに投稿します。トランザクションスコープのようにキャッシュメソッドをラップすることができ、ロックと接続を管理します。

役に立ちましたか?

解決 2

この問題を解決するためのスコーププロバイダーを構築しました。ここでコードを入手できます。

http://www.codeplex.com/CacheScope

他のヒント

では、質問はどこにありますか? VelocityチームはMicrosoft Connectのバグを監視している可能性が高いため、ここに投稿せずにバグを報告する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top