sb = new StringBuilder(1024*1024*1024)>'System.OutOfMemoryException'被抛出

mjb*_*mjb 1 c# mysql stringbuilder out-of-memory

我需要在循环中附加大量字符串,这将创建一个非常长的字符串.
1GB应该足够长以存储字符串,因此我这样做:

var sb = new StringBuilder(1024 * 1024 * 1024);
Run Code Online (Sandbox Code Playgroud)

但收到此错误

'System.OutOfMemoryException' was thrown
Run Code Online (Sandbox Code Playgroud)

任何追加长串的建议?

我正在为MySQL数据库编写备份工具.这些工具将从数据库导出数据并写入文本文件.数据包含BLOB和TEXT数据类型.所以,期待很长的字符串.

这是代码:代码更新1

var conn = new MySqlConnection(Program.ConnectionString);
var cmd = new MySqlCommand();
cmd.Connection = conn;
conn.Open();

cmd.CommandText = selectSQL;

MySqlDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())
{
    var sb = new StringBuilder(1024 * 1024 * 1024);
    for (int i = 0; i < rdr.FieldCount; i++)
    {
        if (sb.Length > 0)
            sb.AppendFormat(separator);

        if (rdr[i].GetType() == typeof(byte[]))
        {
            sb.AppendFormat(ConvertByteArrayToHexString((byte[])rdr[i]));
        }
        else
            sb.AppendFormat(rdr[i] + "");
    }
    WriteToFile(sb.ToString());
}

conn.Close();
Run Code Online (Sandbox Code Playgroud)

rec*_*ive 6

使用文件流写入长文件.任何时候都不需要将完整的字符串保存在内存中.