C# 使用System.Threading.ReaderWriterCount获取内存不足异常
我有一个asp.net应用程序,它在DotNetNuke上运行,在负载下我们偶尔会出现内存不足异常 我有个垃圾堆把它装进了windbg 世界末日!dumpheap-stat是C# 使用System.Threading.ReaderWriterCount获取内存不足异常,c#,asp.net,out-of-memory,C#,Asp.net,Out Of Memory,我有一个asp.net应用程序,它在DotNetNuke上运行,在负载下我们偶尔会出现内存不足异常 我有个垃圾堆把它装进了windbg 世界末日!dumpheap-stat是 1192a588 88684 2128416 AutoMapper.MappingEngine 79333594 9482 2266348 System.Byte[] 134b0034 88695 2838240 System.EventHandler`1[[AutoMap
1192a588 88684 2128416 AutoMapper.MappingEngine
79333594 9482 2266348 System.Byte[]
134b0034 88695 2838240 System.EventHandler`1[[AutoMapper.TypeMapCreatedEventArgs, AutoMapper]]
13d8703c 88684 4611568 System.Collections.Generic.Dictionary`2[[Castle.DynamicProxy.Generators.CacheKey, AutoMapper],[System.Type, mscorlib]]
13d86dc8 88684 4611568 Castle.DynamicProxy.ModuleScope
13d865bc 88684 4611568 System.Collections.Generic.Dictionary`2[[AutoMapper.Internal.TypePair, AutoMapper],[AutoMapper.IObjectMapper, AutoMapper]]
79327434 88703 4612556 System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Int32, mscorlib]]
6c38e4e4 88684 5675776 System.Threading.ReaderWriterLockSlim
79330b24 87736 6458012 System.String
000d9c88 129 24186884 Free
793042f4 221202 101117016 System.Object[]
6c38e4a0 22703104 544874496 System.Threading.ReaderWriterCount
我找不到有关System.Threading.ReaderWriterCount的更多信息,因为这似乎是问题所在
可能的原因是什么?或者失败了,下一步最好的解决方法是什么
根据给定答案中的指针,我查看了ReaderWriterLockSlim。我并没有直接使用它,但我看到它有88684个实例,更深入地挖掘,我看到很多类都有这么多的实例,指向AutoMapper.MappingEngine。这应该是一个单例,所以我已经查看了它的创建位置。我怀疑这是DI容器,并对其进行了一些更改,以查看它是否有帮助
ReaderWriterLockSlim
在内存占用方面不是一个便宜的类-这可能是您的ReaderWriterCount
实例激增的原因。有关反射器的详细信息,请参阅
你能减少这个类的使用吗?可能并非所有锁都需要读/写锁,简单的互斥锁
/锁()
可以工作吗
还要注意的是,这个类是IDisposable-也许您在使用完它们之后没有
Dispose()
-ing它们?谢谢,但奇怪的是我没有使用ReaderWriterLockSlim,至少在我的任何代码中都没有。我确实使用LINQtoSQL和Oracle.DataAccess。有什么想法可以使用它,或者我如何找到它吗?@baralong-你需要像Visual Studio 2010(也是早期版本)中的.Net对象跟踪这样的东西:我有几个类导致了这个问题。他们正在创建映射引擎的额外实例,还有其他不应该保留的类。我最终将一个子类与一个服务(它维护了一个引用)解耦,然后可以对该服务进行垃圾收集并释放内存。