作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
当以 XML 格式流式传输到 XmlReader 时,出现内存不足异常!查看内存分析器,我们可以看到它一遍又一遍地调用 StringBuilder.Append,导致大量 128KB 缓冲区填满所有内存。
这与“流”完全相反。它不应加载超过一个 4KB 的缓冲区。
最佳答案
通读 .NET 源代码,发现有一种“v1compat”模式确实会超前读取,违背了流式传输的目的。那么,如何避免让它进入那种愚蠢的模式呢?
事实证明,调用“new XmlTextReader(stream)”和“XmlReader.Create(stream)”之间存在巨大差异,Microsoft 没有费心记录...而且我在任何地方的任何帖子中都找不到。 .. 前者将其置于“v1compat”模式!!!
Sooo,除非您需要 XmlReader 的行为与它在 .NET 1.1 中完全一样,包括不正确的流行为,否则您永远不应该调用“new XmlTextReader(stream)”...而是使用“XmlReader.Create(stream)” ' 或采用 XmlReaderSettings 的变体之一,如果您需要尝试匹配使用的 XmlTextReader 设置(如果您不传递 XmlReaderSettings,那么至少某些设置会有所不同......我不确定是什么设置最好匹配“new XmlTextReader”...如果有人知道,请在此处添加!
关于c# - 为什么我的新 XmlTextReader(stream) 以数兆字节读入内存而不是正确地流式传输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32940927/
我是一名优秀的程序员,十分优秀!