Когда вы создаете экземпляр кеш-фабрики, а затем больше не используете его, память, которая использовалась при создании объекта, не освобождается. Это окажет существенное влияние на все веб-приложения или сценарии, в которых кэша может создаваться несколько раз. Симптомами этого будет необычно высокое использование памяти одним процессом, и в IIS это, скорее всего, приведет к тому, что вашему приложению придется чаще перезагружать память, поскольку оно быстрее загружает выделенную память.
Следующий код покажет увеличение примерно на 500 МБ, да, я имею в виду использование мегабайтов памяти!
Для дублирования вставьте следующий код в ваше приложение:
Dim CacheFactory1 As CacheFactory = New CacheFactory()
For i As Int32 = 1 To 1 * (10 ^ 4)
CacheFactory1 = New CacheFactory()
CacheFactory1 = Nothing
Next
Для этого есть только два обходных пути.
- Команда Velocity исправляет ошибку (и я уверен, что они исправят)
- Вам необходимо использовать один и тот же объект cachefactory в статическом методе в вашем приложении и ссылаться на него каждый раз, когда вы хотите использовать кеш. (это работает, но, на мой взгляд, не оптимально.)
У меня также есть кешингоскоп, с помощью которого можно обернуть ваши методы кеширования, и я скоро опубликую его в codeplex. Вы можете обернуть его вокруг ваших методов кэширования точно так же, как область транзакции, и он будет управлять блокировкой и соединением для вас.