我开发了一个Silverlight prism项目来复制内存泄漏。只是想知道棱镜模块的生命周期。
如果在模块中我注册了一个视图,那么当模块不再使用时视图会被破坏吗?
每个模块是否共享相同的依赖容器(例如,统一)或每个模块是否都有一个单独的?
我在这里有一个更深入的问题,
https://stackoverflow.com/questions/4652364/memory-usage-is-suspect-when-loading-prism-modules
我试图了解打开和关闭棱镜模块时内存使用的一些差异。
答案 0 :(得分:1)
1)视图被销毁的时间点取决于您将视图注册到容器的方式。如果在注册期间没有更改对象生命周期,那么当GC找到它时它将被销毁,而不会引用任何对象。如果在注册期间明确指定了生命周期管理器,则视图将被销毁,具体取决于管理器管理的特定生命周期。例如:当您使用Unity容器并使用ContainerControlledLifetimeManager注册视图时,视图会在容器被销毁时被销毁。
2)只要您不为自己的每个模块制作子容器,所有模块共享一个容器。