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