Мне нужно добавить много строк в цикле, и это создаст очень длинную строку.
1GB должна быть достаточно длинной, чтобы хранить строку, поэтому я делаю это:sb = new StringBuilder (1024 * 1024 * 1024)> 'System.OutOfMemoryException' был сброшен
var sb = new StringBuilder(1024 * 1024 * 1024);
но получает эту ошибку
'System.OutOfMemoryException' was thrown
какие-либо советы, добавляемых длинные строки?
Я пишу средства резервного копирования для базы данных 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();
Похоже, что ваш JVM не настроен на доступ к 2 гигабайтам памяти (1G символов == 2 ГБ). – dasblinkenlight
JVM? Это вопрос C#. – Nuzzolilo