本文http://blogs.msdn.com/tess/archive/2006/02/15/532804.aspx http://blogs.msdn.com/tess/archive/2006/02/15/532804.aspxTess Ferrandez 概述了为什么使用 XMLSerialization 会导致内存泄漏。
泄漏是由于对象在内存中实例化为程序集而不是对象而导致的,因此不会成为垃圾收集器的目标。
文章最初是针对 1.0/1.1 CLR 写的,但是关于 2.0 CLR 的更新不清楚。
我在仍处于测试阶段的 Web 应用程序中广泛使用 XMLSerialization/Deserialization,以进行 UI/服务器交换。这些对象只是 DTO(仅具有属性的对象)。
先感谢您!
真正导致泄漏的部分是 XML 引擎为序列化目的生成的程序集从未被收集。从 CLR 2.0SP1 (.Net 3.5) 开始,情况仍然如此。一旦程序集被加载到进程中,它就不会被删除,直到包含该程序集的 AppDomain 也被卸载。
如果您注意到本文的底部,她提到了一种让 XML 引擎重用程序集的方法,这样内存就不会失去控制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)