我在桌面WPF应用程序中使用Unity。我有一个包含许多项的ListView,我使用unitycontainer为每个ListViewItem解析每个ViewModel的实例。我意识到那些用容器解析的ViewModel永远不会被垃圾收集,这是一个内存泄漏。在这种情况下的做法是什么?我应该手动构建那些视图模型列表,还是Unity为此提供解决方案?
答案 0 :(得分:0)
如果要控制所创建对象的生命周期,只需使用ExternallyControlledLifetimeManager
注册它们即可。这将告诉Unity,一旦它创建了一个对象,它就不负责保持对象存活或任何东西,所以一旦没有对对象保持引用,GC最终会在路上收集它。
That documentation不再更新,但有关该LifetimeManager的信息仍然相关。
注意:我不确定我是否会实例化大量的微小物体,但由于信息太少,我无法提供超出答案的建议。