2009-01-11 10 views
0

Lorsque vous créez une instance de l'objet cachefactory et que vous ne l'utilisez plus, la mémoire utilisée lors de la création de l'objet n'est pas libérée. Cela aura un effet substantiel sur toutes les applications Web ou tous les scénarios dans lesquels une cachfactory peut être créée plusieurs fois. Les symptômes de cette utilisation inhabituellement élevée de la mémoire un processus et dans IIS cela entraînera très probablement votre application à recycler plus souvent car il dépasse sa mémoire allouée plus rapidement.Velocity CTP2 Serious Memory Bogue

Le code suivant montrera une augmentation d'environ 500 Mo oui je veux dire MegaBytes d'utilisation de la mémoire!

Pour dupliquer mettre le code suivant dans votre application:

Dim CacheFactory1 As CacheFactory = New CacheFactory() 
For i As Int32 = 1 To 1 * (10^4) 
    CacheFactory1 = New CacheFactory() 
    CacheFactory1 = Nothing 
Next 

Il n'y a que deux solutions de contournement pour cela.

  1. équipe Velocity corrige le bug (et je suis sûr qu'ils vont)
  2. Vous devez utiliser le même objet CacheFactory sur une méthode statique dans votre application et référence chaque fois que vous voulez utiliser le cache. (Cela fonctionne mais n'est pas optimal selon moi.)

J'ai aussi un Cachingcope qui peut être utilisé pour envelopper vos méthodes de mise en cache et publiera bientôt sur codec. Vous pouvez l'entourer de vos méthodes de mise en cache comme une portée de transaction et gérer le verrouillage et la connexion pour vous.

Répondre

0

J'ai construit un fournisseur d'étendue pour résoudre ce problème. Vous pouvez obtenir le code ici.

0

Alors, où est la question? Vous devriez déposer le bogue, et ne pas l'afficher ici, car l'équipe Velocity surveille plus que probablement Microsoft Connect pour détecter les bogues.