Исключение OutofMemory при сериализации сложных объектов - PullRequest
1 голос
/ 28 сентября 2010

У меня есть веб-приложение, которое сериализует очень сложный объект, который имеет около 500 дочерних объектов в базе данных SQL 2008. Проблема в том, что когда объект очень большой (более 500 дочерних объектов), он генерирует исключение вне памяти, и нам нужно перезапустить iis.

Я использую двоичный сериализатор в .NET для сериализации объекта в поток памяти. Я также пытался использовать файловый поток, но он тоже не работает.

Общий размер объекта при сериализации в файл составляет около 15 МБ, а веб-сервер - Windows 2008 IIS 7 32-битный.

Мне не нужно запускать какие-либо запросы к этому объекту. Просто нужно где-то его сохранить, а затем извлечь.

Так что, пожалуйста, укажите мне правильное направление здесь ...

1 Ответ

0 голосов
/ 28 сентября 2010

Трудно ответить на этот вопрос точно без доступа к вашей системе, слишком много неизвестных.Поток файлов размером 15 МБ не мал, но он, конечно, не массивен, и ваша система должна легко с ним справиться.

Возможно, вашему веб-серверу просто нужно больше оперативной памяти.Вы профилировали машину?Это может быть даже не ваша сериализация, которая является основной причиной, может быть, у вас слишком много всего происходит на этом сервере для начала.

Возможно, вы также захотите создать свой собственный сериализатор вместо использования встроенных длярамки.Или же вы можете захотеть исследовать различные варианты включения / выхода существующих сериализаторов и посмотреть, нужно ли сохранять все в объекте.

...