【发布时间】:2011-02-20 06:10:06
【问题描述】:
我正在编写一个程序,用于将 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()
在测试过程中,我看到了一些 -- 内存不足异常 -- 并且对如何找到解决方案一无所知?你们对响应的内存优化传递有什么建议吗?
是否有一种内存有效的数据编码方式?或者可能对数据进行分块—— 如果不将整个东西构建到一个巨大的字符串对象中,我就是想不出如何返回它
谢谢
-- 一些澄清—— 如 josh 所述,这是一个通过千兆以太网链接的 asp .net webservices 应用程序。我对它不是很熟悉,所以还是有点学习曲线。
我正在使用 XMLWriter 创建 XML 并使用 String 从中创建一个字符串
一些统计数据—— 响应 xml 大小 = 大约 385 兆(我的数据大小会很快增长到远不止这些)
由内存分析器计算的字符串对象大小 = 峰值为 605MB
感谢所有回复的人......
【问题讨论】:
-
1GB 的 xml 作为 HTTP 响应?真的吗?
-
我很想说“扔一些硬件”(开玩笑)。每个客户端 500 MB(或 350 MB 或 1GB)不可扩展。也许您可以进一步了解您正在生成的 XML。这个msdn.microsoft.com/en-us/library/aa528818.aspx 可能会有所帮助。
-
多么有见地——我相信这是管理层选择的解决方案:)
标签: c# string memory memory-management memory-leaks