我们已经转储了占用大量内存的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:这是否意味着代码在使用计时器对象时导致内存泄漏?