我最近正在尝试调试我正在处理的应用程序(Windows服务)中的内存泄漏,并发现数十万WeakReferences
- 已全部死亡。跟踪它后,似乎这些是由温莎TypedFactory
创建的。
我有以下内容:
[Singleton]
public class MySingleton
{
public MySingleton(Func<MyOtherType> createMyOtherType) { ... }
}
[Transient]
public class MyOtherType : IDisposable { ... }
经常调用 createMyOtherType
(因为MyOtherType
是IDisposable
和Transient
)。似乎每次拨打createMyOtherType
时,WeakReference
都会创建一个TypedFactory
来跟踪该实例。
我猜测这种行为是设计的,但有没有办法让我告诉打字的工厂在WeakReferences
的生命周期内清理它MySingleton
?