gpt4 book ai didi

c# - 为什么我的新 XmlTextReader(stream) 以数兆字节读入内存而不是正确地流式传输?

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:26 26 4
gpt4 key购买 nike

当以 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com