当您创建缓存工厂的实例,然后不再使用它时,在创建对象期间使用的内存不会被释放。这将对所有web应用程序或可能多次创建恶搞的场景产生重大影响。其症状将是异常高的内存,使用一个进程,在IIS中,这很可能导致您的应用程序不得不更频繁地循环,因为它会更快地溢出其分配的内存。
下面的代码将显示大约500 of的增长,是的,我指的是内存使用的MegaBytes!
要复制,请将以下代码放入应用程序中:
Dim CacheFactory1 As CacheFactory = New CacheFactory()
For i As Int32 = 1 To 1 * (10 ^ 4)
CacheFactory1 = New CacheFactory()
CacheFactory1 = Nothing
Next解决这一问题的方法只有两个。
。
我还有一个缓存范围,可以用来包装您的缓存方法,并且很快就会在codeplex上发布。您可以将它封装在缓存方法周围,就像事务范围一样,它将为您管理锁定和连接。
发布于 2009-02-16 19:50:07
我已经为解决这个问题构建了一个范围提供程序。你可以在这里找到密码。
http://www.codeplex.com/CacheScope
发布于 2009-01-11 04:40:55
那么问题在哪里呢?您应该将错误归档,而不是在这里发布,因为速度小组非常可能监视Microsoft是否存在bug。
https://stackoverflow.com/questions/432364
复制相似问题