|
1
2
它主要通过.NET 2.0动态方法来解决。但是,如果不使用[xmlroot]属性,仍然有一个失败模式。回顾 this article 详情。 |
|
|
2
7
实际导致泄漏的部分是,从未收集过XML引擎为序列化目的生成的程序集。从clr 2.0sp1(.net 3.5)开始,情况仍然如此。一旦程序集加载到进程中,它将不会被删除,直到同时卸载包含该程序集的AppDomain。 不过,如果您注意到文章的末尾,她提到了一种让XML引擎重用程序集的方法,这样内存就不会失控。 |
|
|
3
2
我在2.0中遇到了同样的问题,所以我可以确认内存泄漏仍然存在,但是我没有3.5的经验。 只要只使用构造函数xmlserializer(type)和xmlserializer(type,defaultnamespace),就应该是安全的,因为xmlserializer将自动缓存。如果使用任何其他构造函数,则必须创建自己的缓存。 |
|
|
4
2
谢谢您。似乎键是使用XmlSerializer(类型)并允许内存中的实例保持缓存。如果您将类名别名为,那么缓存将无法工作,并且会发生泄漏。我必须测试和监控以确定我们是否无泄漏。 -达斯廷 |