Мне нужно создать большой список строк и сохранить его в памяти, однако при его создании генерируется исключение OutOfMemoryException. Согласно Resource Monitor у меня все еще есть 1 ГБ памяти. Я нашел эту статью базы знаний , посвященную этой проблеме, но похоже, что она должна была быть исправлена в framework 1.1 SP1 (я использую 3.5 sp1).
Кто-нибудь может пролить свет на то, что происходит за кулисами? Ограничивает ли .net Framework, сколько памяти может быть использовано одним процессом (в 32-битной системе)? Если так, я могу понять, почему, но что не имеет смысла, так это то, что приложение использует только 1,6 ГБ, а системе еще остается ~ 1 ГБ.
Редактировать - Для тех, кто спросил здесь, есть более подробная информация:
У меня есть список (да, я мог бы использовать что-то еще, но сейчас я просто создаю прототипы), я генерирую случайную строку, выполняя Guid.NewGuid (). ToString (), и добавляю ее в список , Я пытаюсь сгенерировать список с таким количеством элементов, сколько я могу в него вписать, и протестировать различные методы поиска конкретного. Мое первое предположение состояло в том, что происходит некоторая фрагментация, но я отбросил все, кроме приведенного ниже кода, и это все еще происходит. Я не думаю, что этот маленький фрагмент может привести к фрагментации, но я, вероятно, ошибаюсь.
List<string> blah = new List<string>();
for (int i = 0; i < 50000000; i++)
{
blah.Add(Guid.NewGuid().ToString());
}