如何处理内存不足异常字符串生成器

时间:2016-03-08 00:21:04

标签: c# out-of-memory stringbuilder streamwriter

我有这个方法,预计会返回一个字符串,但字符串很大,可能是GB。目前这会遇到内存不足异常。

我在想我会写一个文件(随机文件名)然后读取它删除文件并发回回复。尝试MemoryStreamStreamWriter也遇到内存不足异常。

不想用容量来初始化StringBuilder,因为它的大小未知,我认为它需要连续的内存块。

解决这个问题的最佳方法是什么?

    public string Result()
    {
        StringBuilder response = new StringBuilder();
        for (int i = 1; i <= Int.Max; i++)
        {
            response.Append("keep adding some text {0}", i);
            response.Append(Environment.NewLine);
        }

        return response.ToString();
    }

1 个答案:

答案 0 :(得分:2)

即使您可以解决StringBuilder上的内存问题,通过调用response.ToString()生成的字符串也会大于.NET中字符串的最大长度,请参阅:https://stackoverflow.com/a/140749/3997704

所以你必须让你的函数将结果存储在别处,比如在文件中。