当您创建cachefactory的实例,然后不再使用它时,不会释放在创建对象期间使用的内存。这将对所有可能多次创建cachfactory的Web应用程序或场景产生重大影响。这种情况的症状将是异常高的内存使用过程,在IIS中,这很可能会导致您的应用程序不得不更频繁地回收,因为它会更快地超出其分配的内存。
以下代码将显示增加约500MB是的我的意思是MegaBytes的内存使用量!
要复制,请将以下代码放入您的应用中:
Dim CacheFactory1 As CacheFactory = New CacheFactory()
For i As Int32 = 1 To 1 * (10 ^ 4)
CacheFactory1 = New CacheFactory()
CacheFactory1 = Nothing
Next
这只有两种解决方法。
我还有一个可以用来包装你的缓存方法的cachingscope,并会很快在codeplex上发布。您可以像处理事务范围一样将其包装在缓存方法中,它将为您管理锁定和连接。
答案 0 :(得分:0)
那么问题在哪里?你应该提交bug,而不是在这里发布,因为Velocity团队很可能会监视Microsoft Connect的bug。
答案 1 :(得分:0)
我已经构建了一个解决此问题的范围提供程序。你可以在这里获得代码。