我正在编写一个程序,用于将 100 多个 MB 字符串数据(接近演出)格式化为 xml == 我需要将其作为对 HTTP (GET) 请求的响应返回。
我正在使用 StringWriter/XmlWriter 在循环中构建记录的 XML 并返回
using (StringWriter writer = new StringWriter())
using (writer = XmlWriter.Create(writer, settings)) //where settings are the xml props
writer.ToString()
在测试过程中,我看到了一些 -- 内存不足异常 -- 并且对如何找到解决方案一无所知?你们对响应的内存优化传递有什么建议吗?
是否有一种内存有效的数据编码方式?或者可能对数据进行分 block —— 如果不将整个东西构建到一个巨大的字符串对象中,我就是想不出如何返回它
谢谢
-- 一些澄清—— 如 josh 所述,这是一个通过千兆以太网链接的 asp .net webservices 应用程序。我对它不是很熟悉,所以还是有点学习曲线。
我正在使用 XMLWriter 创建 XML 并使用 String 从中创建一个字符串
一些统计数据—— 响应 xml 大小 = 大约 385 兆(我的数据大小会很快增长到远不止这些)
由内存分析器计算的字符串对象大小 = 峰值为 605MB
感谢所有回复的人......
最佳答案
使用包裹在 Reponse.OutputStream
周围的 XmlTextWriter
将 XML 发送到客户端并定期刷新响应。这样一来,您在任何时候都不必拥有超过几 MB 的内存(至少对于发送到客户端而言)。
关于c# - 内存中非常大的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2846627/