c# - 内存中非常大的字符串

标签 c# string memory memory-management memory-leaks

我正在编写一个程序,用于将 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/

相关文章:

c# - 如何使用 visual c# 从 access mdb 获取数据并将其放入 postgresql 表中?

c# - 如果 MediaPlayer 处于全屏模式,DwmGetWindowAttribute 无法获得正确的 Rect 大小

c# - 正则表达式 c# 表达式来验证除零以外的所有数字

c# - 从 .json 文件反序列化 JSON 并将成员添加到 List 对象

c - 读取三行文本并计算每个字母的程序 (C)

java - editText.getText().toString() 检索字符串全部大写

string - 使用 Dart 迭代包含特殊字符的字符串

memory - Angular2 一个非常大的 SPA 内存消耗

C 编程 - 将未声明的字符串传递给函数(内存分配)

ios - 为什么我的 iOS 应用程序占用如此多的内存和 CPU?