Недавно я пытался отладить утечку памяти в приложении (службе Windows), над которым я работаю, и обнаружил сотни тысяч WeakReferences
- все они мертвы. После его отслеживания создается впечатление, что они создаются Виндзором TypedFactory
.
У меня есть следующее:
[Singleton]
public class MySingleton
{
public MySingleton(Func<MyOtherType> createMyOtherType) { ... }
}
[Transient]
public class MyOtherType : IDisposable { ... }
createMyOtherType
часто вызывается (поскольку MyOtherType
- это IDisposable
и Transient
). Кажется, что каждый раз, когда я звоню createMyOtherType
, WeakReference
создает *1013* для отслеживания этого экземпляра.
Я предполагаю, что это поведение разработано, но есть ли способ, чтобы я сказал типизированной фабрике очистить ее WeakReferences
за время жизни MySingleton
?