Задать вопрос
@Nubzilo
Изучаю C#

Почему возникает OutOfMemoryException в текущей ситуации?

Добрый день. На машине x64, 16GB RAM
Почему код
List<string> textLines = File.ReadAllLines(path);
и
HashSet<string> fileStrings = new HashSet<string>(File.ReadLines(path));

при условии, что path - файл размером в 2.5GB вызывает exception из заголовка темы?
  • Вопрос задан
  • 301 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Melz
Размер объекта в .Net до версии 4.5 ограничен 2Gb. В 4.5 можно аллокировать используя
gcAllowVeryLargeObjects
https://msdn.microsoft.com/en-us/library/hh285054%...

Но лучше не заморачиваться и делать так:
static IEnumerable<string> ReadLines(string filename)
{
    using (TextReader reader = File.OpenText(filename))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            yield return line;
        }
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AxisPod
@AxisPod
Ну как бы большие файлы лучше так https://msdn.microsoft.com/en-us/library/dd997372(v=vs.110).aspx
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы