Memory leaks Velocity CTP2严重内存错误

Memory leaks Velocity CTP2严重内存错误,memory-leaks,appfabric,distributed-caching,Memory Leaks,Appfabric,Distributed Caching,当您创建cachefactory实例,然后不再使用它时,在创建对象期间使用的内存不会被释放。这将对可能多次创建cachfactory的所有web应用程序或场景产生重大影响。这种情况的症状是进程中内存使用率异常高,在IIS中,这很可能导致应用程序必须更频繁地循环使用,因为它会更快地溢出分配的内存 下面的代码将显示大约500MB的增加是的,我的意思是内存使用量增加了MB 要复制,请将以下代码放入您的应用程序: Dim CacheFactory1 As CacheFactory = New Cache

当您创建cachefactory实例,然后不再使用它时,在创建对象期间使用的内存不会被释放。这将对可能多次创建cachfactory的所有web应用程序或场景产生重大影响。这种情况的症状是进程中内存使用率异常高,在IIS中,这很可能导致应用程序必须更频繁地循环使用,因为它会更快地溢出分配的内存

下面的代码将显示大约500MB的增加是的,我的意思是内存使用量增加了MB

要复制,请将以下代码放入您的应用程序:

Dim CacheFactory1 As CacheFactory = New CacheFactory()
For i As Int32 = 1 To 1 * (10 ^ 4)
    CacheFactory1 = New CacheFactory()
    CacheFactory1 = Nothing
Next
这方面只有两种解决办法

  • Velocity团队修复了这个bug(我相信他们会的)
  • 您需要在应用程序中的静态方法上使用相同的cachefactory对象,并在每次使用缓存时引用它。(这是可行的,但在我看来不是最优的。)

  • 我还有一个cachingscope,可以用来包装你的缓存方法,很快就会在codeplex上发布。您可以像事务作用域一样将其包装在缓存方法中,它将为您管理锁定和连接

    那么问题在哪里?您应该将此错误归档,而不是发布在此处,因为Velocity团队很可能正在监视Microsoft Connect的错误。

    我已经构建了一个范围提供程序来解决此问题。你可以在这里找到代码