Мы сделали дамп C# (.Net fmk 4.5.1), который использует слишком много памяти. Мы подозреваем утечку памяти, и, похоже, вся память занята использованием MEF.
Вот объект (ContractService.ContratSingletonMgr), который занимает больше памяти:
1c0eeeec 728ee2db System.Net.TimerThread.ThreadProc()
ebp+50: 1c0eeef0 (interior)
-> 11bfc4e0 System.Object[]
-> 05c1cbc0 System.ComponentModel.Composition.Hosting.CompositionContainer
-> 05d92c78 System.EventHandler`1[[System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs, System.ComponentModel.Composition]]
-> 05d92c58 System.Object[]
-> 05c1d04c System.EventHandler`1[[System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs, System.ComponentModel.Composition]]
-> 05c1cce4 System.ComponentModel.Composition.Hosting.CatalogExportProvider
-> 05c1cdbc System.Collections.Generic.HashSet`1[[System.IDisposable, mscorlib]]
-> 93011010 System.Collections.Generic.HashSet`1+Slot[[System.IDisposable, mscorlib]][]
-> 049f86a4 System.ComponentModel.Composition.ReflectionModel.DisposableReflectionComposablePart
-> 049f86fc ContractService.ContratSingletonMgr
Я не понимаю, как решить проблему: думаю, мне нужно отменить подписку на CompositionContainer ExportsChangeEvent; но я дважды проверил свой код, и у меня нет подписки на это событие ... Что касается System.Net.TimerThread.ThreadProc: означает ли это, что код вызывает утечку памяти при использовании объекта таймера?
@maccettura и я думали, что после обеда в пятницу лучше не будет ... :-)
@Dypso, в дополнение к диагностическому стеку, не могли бы вы также показать соответствующие части пользовательского кода, связанные с проблемой?
@dlatikai: проблема в том, что я пытаюсь найти этот соответствующий код ... Я сделал дамп и попытался найти основную причину потребления памяти, и этот ContractService.ContratSingletonMgr, похоже, занимает большую часть этого ... Кстати, извините за плохой английский ;-)
Событие в CatalogExportProvider не отменяется.





Название заставило меня хихикать ...