C #: как понять результат этого дампа памяти - PullRequest
0 голосов
/ 09 ноября 2018

Мы сделали дамп 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: означает ли это, что код вызывает утечку памяти при использовании объекта таймера?

...