У меня есть приложение asp.net, оно работает на DotNetNuke, при загрузке мы получаем случайное исключение из памяти.Получение исключения из памяти с помощью System.Threading.ReaderWriterCount
У меня дамп загружен в windbg.
конец! Dumpheap -stat является
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 и внесли некоторые изменения вокруг этого, чтобы узнать, помогает ли это
У меня было несколько классов, вызывающих эту проблему. Они создавали дополнительные экземпляры механизма сопоставления, были другие классы, которые поддерживались, когда их не должно было быть. Я закончил развязку дочернего класса с сервисом (он поддерживал ссылку), и тогда служба могла быть собрана мусором, и память была освобождена. – baralong