2017-02-16 4 views
-4

В цикле я добавляю миллион строк (в основном от 2 до 3 символов) до List<string>. В конце каждой итерации список строк очищается. Большая часть итераций продолжается без проблем. Но на одной конкретной итерации список строк выдает OutOfMemoryException даже с 700 000 строковых элементов. Я понятия не имею, почему это происходит и как его решить. Может ли кто-нибудь помочь?Список <string> throws OutOfMemoryException в C#

+3

Как насчет примеров кода? –

+1

Возможный дубликат [C#: исключение из памяти] (http://stackoverflow.com/questions/8563933/c-sharp-out-of-memory-exception) – EJoshuaS

ответ

1

Поскольку у вас нету предоставил код для людей, чтобы увидеть, что будет трудно определить, однако это является причиной (ы) OutOfMemoryException:

Детали из MSDN.

  • Вы пытаетесь расширить объект StringBuilder за пределы длины, определенной в свойстве StringBuilder.MaxCapacity.

  • Общая среда исполнения не может выделить достаточную непрерывную память для успешного выполнения операции. Это исключение может быть вызвано любым присваиванием свойств или вызовом метода, для которого требуется выделение памяти.

Для получения дополнительной информации о причине, за исключением OutOfMemoryException см https://blogs.msdn.microsoft.com/ericlippert/2009/06/08/out-of-memory-does-not-refer-to-physical-memory/.

0

Это должно быть гораздо меньше теоретического максимального размера для списка. Однако класс List использует массив в качестве основного хранилища, поэтому он хранит все в смежных ячейках памяти. Если ваша память сильно фрагментирована, возможно, что не хватает смежных областей памяти.

Смежные вопросы