Какая кодировка вашего исходного файла? Если это ascii, то только для одной строки будут загружены в два раза больше размера файла, чтобы загрузить их в ваш массив. Символ C # составляет 2 байта, а C # string добавляет дополнительно 20 байтов на строку в дополнение к символам.
В вашем случае, поскольку это файл журнала, вы, вероятно, можете использовать тот факт, что в сообщениях много повторений. Скорее всего, вы можете разобрать входящую строку в структуру данных, которая уменьшает накладные расходы памяти. Например, если у вас есть временная метка в файле журнала, вы можете преобразовать ее в значение DateTime, которое составляет 8 байт . Даже короткая метка времени 1/1/10
добавит 12 байтов к размеру строки, а метка времени с информацией о времени будет еще длиннее. Другие токены в вашем потоке журналов могут быть превращены в код или перечисление аналогичным образом.
Даже если вы оставите значение в виде строки, если вы можете разбить его на части, которые часто используются, или удалить шаблон, который вообще не нужен, вы, вероятно, сможете сократить использование памяти. Если есть много общих строк, вы можете Стажер их и платить только за 1 строку независимо от того, сколько у вас есть.