我有一个网站,每当它到达代码中的以下位置时,就会抛出OutOfMemoryExceptions:
XmlSerializer xs = new XmlSerializer(t, xoverrides);
由于这种情况仅在Web服务器上发生,我没有太多关于为什么会发生这种情况的信息。我知道进行序列化的对象不是什么严重的问题--每个对象明显少于1MB。
你曾经遇到过这种情况吗?能否帮助我诊断一下问题?非常感谢您的帮助。
谢谢!
我有一个网站,每当它到达代码中的以下位置时,就会抛出OutOfMemoryExceptions:
XmlSerializer xs = new XmlSerializer(t, xoverrides);
由于这种情况仅在Web服务器上发生,我没有太多关于为什么会发生这种情况的信息。我知道进行序列化的对象不是什么严重的问题--每个对象明显少于1MB。
你曾经遇到过这种情况吗?能否帮助我诊断一下问题?非常感谢您的帮助。
谢谢!
OutOfMemoryException不是由被序列化的对象引起的,而是由XmlSerializer对象的构建导致的。创建XmlSerializer时,会动态生成一个程序集并加载到AppDomain中。这些程序集直到它们所在的AppDomain卸载后才能进行垃圾回收,而在您的情况下永远不会卸载。根据使用的XmlSerializer构造函数,每个被构造的XmlSerializer都将动态生成一个新的程序集。随着时间的推移,这些程序集将消耗所有可用的内存。
有几种解决方法: