У меня есть программа, которая строит большую структуру на основе xml в классы и удерживает их в коллекции, которая будет сериализована ... назовите их контрактами. Каждый контракт входит в коллекцию и состоит из объектов, которые будут представлять узлы в документе XML. Это все хорошо и денди, но теперь мы собираем 10000 предметов в коллекции. Диспетчер задач все еще ставит нас на 586 мегабайт использования на 8-гигабайтной машине.Сериализация OutOfMemoryException
Проблема возникает, когда я сериализации вниз к файлу:
XmlSerializer serializer = new XmlSerializer(typeof(PolicyExtract));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("ent", "http://xxxxxx.com/V2.0/enrollmententities");
StreamWriter fs = new StreamWriter(filePath);
serializer.Serialize(fs, this, ns);
fs.Close();
Это является класс или сама коллекция. Файл огромен (как и ожидалось), но недостаточно, чтобы взять всю память. В этот момент я получаю System.OutOfMemoryException
, и файл вообще не создается.
Итак, чтобы воспроизвести, я пытаюсь сериализовать большую коллекцию (все еще хорошо в пределах памяти) в файл и получать OutOfMemoryException
и без файла.
Любые идеи?
32-битный процесс, даже на 64-битной машине, сможет получать максимум 3 ГБ - убедитесь, что вы выполняете этот процесс как 64-битный. – Oded
... и только 2 ГБ на экземпляр объекта, даже на 64-битной машине. – ken2k
@Own 2GB или 3GB? –