js_duan 2015-04-17 07:49 采纳率: 0%
浏览 2460

C# 请教XML序列化时,内存错误问题如何解决

环境C#4.5 E5 16G内存
代码:
try
{
CommonHelper.CGCollect();
string xml = XmlHelper.XmlSerialize(listKeyWords, Encoding.Default);
Mutex m = new Mutex();
if (!string.IsNullOrEmpty(xml))
{
DocHelper.writeXC(xml, string.Format("{0}\{1}", ConfigurationInfo._KEYWORDSPATH, pathName), FileMode.OpenOrCreate, m);
}
}

public static string XmlSerialize(object o, Encoding encoding)
{

        using (MemoryStream stream = new MemoryStream())
        {
            XmlSerializeInternal(stream, o, encoding);

            stream.Position = 0;
            using (StreamReader reader = new StreamReader(stream, encoding))
            {
                return reader.ReadToEnd();
            }
        }
    }

错误信息:

System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.OutOfMemoryException: 引发类型为“System.OutOfMemoryException”的异常。
在 System.IO.MemoryStream.set_Capacity(Int32 value)
在 System.IO.MemoryStream.EnsureCapacity(Int32 value)
在 System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count)
在 System.Xml.XmlEncodedRawTextWriter.EncodeChars(Int32 startOffset, Int32 endOffset, Boolean writeAllToStream)
在 System.Xml.XmlEncodedRawTextWriter.FlushBuffer()
在 System.Xml.XmlEncodedRawTextWriter.RawText(Char* pSrcBegin, Char* pSrcEnd)
在 System.Xml.XmlEncodedRawTextWriter.RawText(String s)
在 System.Xml.XmlEncodedRawTextWriter.WriteStartAttribute(String prefix, String localName, String ns)
在 System.Xml.XmlEncodedRawTextWriterIndent.WriteStartAttribute(String prefix, String localName, String ns)
在 System.Xml.XmlWellFormedWriter.WriteStartAttribute(String prefix, String localName, String namespaceName)
在 System.Xml.Serialization.XmlSerializationWriter.WriteAttribute(String localName, String ns, String value)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterList1.Write7_WordsareadataModelS(String n, String ns, WordsareadataModelS o, Boolean isNullable, Boolean needType)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterList1.Write8_WordsareadataModel(String n, String ns, WordsareadataModel o, Boolean isNullable, Boolean needType)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterList1.Write9_KeyWords(String n, String ns, KeyWords o, Boolean isNullable, Boolean needType)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterList1.Write10_ArrayOfKeyWords(Object o)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o)
在 Lanwatcher.Tools.XmlHelper.XmlSerializeInternal(Stream stream, Object o, Encoding encoding) 位置

 预计序列化后数据大小1G左右 

 这个问题如何解决呢?
  • 写回答

1条回答 默认 最新

  • threenewbee 2015-04-17 10:39
    关注

    生成什么xml要生成这么大?

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮