WCF服务器端和MEF内存泄漏 [英] WCF server side and MEF memory leaks
问题描述
您好,
我正在处理一个大型WCF应用程序,对于服务器端,我正在使用MEF将所有依赖项注入我的服务类中.客户端调用时,自定义InstanceProvider将创建服务.
我的服务在每次调用时都具有实例模式,并且我使用非共享零件创建来创建零件.由于所有类之间都存在依赖性,因此在创建新服务实例时,会创建不同类的许多实例 已创建.
My services have instance mode per call, and I used NonShared part creation for the creation of the parts. Because of the dependencies between all the classes many instances are created of different classes when a new service instance is created.
在对代码进行性能分析期间,我注意到多次调用服务时会发生巨大的内存泄漏.
During profiling of the code I noticed that there was a huge memory leak when services are called multiple times.
我进行了一些研究,发现MEF在我的物体已经被处置时正在握住它们.
如何更改此行为,以便MEF释放那些对象?
还是无法实现?
我正在决定是否需要更改IoC容器的其他名称,因为这不能正常工作,并且我正接近该应用程序的启动日期.
但是,对于WCF服务器端应用程序来说,什么是一个好的IoC容器?
那没有这个缺点,当我完成这项服务后会释放内存吗?
任何帮助将不胜感激.
有关,
Marcel
推荐答案
>>如何更改此行为,以便MEF释放那些对象?
似乎有三种方法可以解决此问题,建议您参考下面的链接,以检查它是否对您有用.
#MEF保留对非共享IDisposposable部件的引用,不允许它们由GC收集
根据您的描述,它似乎与调用服务时的MEF创建对象有关.我建议您尝试通过一个包含MEF的小项目来重现您的问题,然后我们可以与您紧密合作 通过这个项目.
Based on your description, it seems it is related with the MEF create objects when services are called. I would suggest you try to reproduce your issue with a small project which contains MEF, and then we could work closely with your issue by this project.
最好的问候
爱德华
这篇关于WCF服务器端和MEF内存泄漏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!