SandCastle и OutOfMemoryException

SandCastle не может обработать нашу библиотеку классов, потому что она аварийно завершает работу с исключением OutOfMemoryException во время преобразования XSL.

Что мы можем с этим поделать, кроме очевидного, купить больше памяти? Проблема в том, что это наши машины для разработчиков с 3,3 ГБ памяти в 32-разрядной ОС, поэтому в основном нам нужно либо перейти на 64-разрядную версию и больше (что не произойдет в ближайшее время), либо настроить виртуальный сервер для сделайте это с большим количеством памяти (что повлияет на рабочие серверы).

Я серьезно сомневаюсь, что у нас самая большая библиотека классов в мире, для которой требуются файлы справки, так какие у нас есть варианты? Есть ли волшебная настройка "Не вылетать с ошибками нехватки памяти", которую мы забыли отключить?


person Lasse V. Karlsen    schedule 20.07.2009    source источник


Ответы (1)


Если вы используете 32-битную Windows, ваш пользовательский процесс сможет адресовать только 2 ГБ памяти по умолчанию (3 ГБ работают с учетом большого адреса). 2 ГБ используются для всего в процессе, поэтому среда выполнения .NET, стандартные библиотеки, резервирование и т. Д. - все в порядке. По моему опыту, остается около 1,5 ГБ для приложений .NET на 32-разрядной версии.

Вы можете получить доступ к большему объему памяти, используя переключатель с поддержкой большого адреса, но он не предоставляется бесплатно, если вы используете 32-битную Windows. Переход на 64-битную Windows позволит вашему 32-битному приложению получить доступ ко всему 32-битному адресному пространству и, таким образом, даст вам 4 ГБ адресного пространства.

Недавно я написал запись в блоге с подробностями об использовании памяти для приложений .NET, но, поскольку я веду блог на датском языке, вы, возможно, не сможете ее прочитать. Однако, если вы хотите взглянуть, ссылка: http://kodehoved.dk/?p=156

Вы также можете найти релевантное сообщение в блоге MSDN: http://blogs.msdn.com/maoni/archive/2007/05/15/64-bit-vs-32-bit.aspx

person Brian Rasmussen    schedule 20.07.2009
comment
Хотя я попробую это сделать, я не заметил, что мы не включили поддержку / 3GB для наших компьютеров, поэтому мне придется это сделать. Однако вопрос в том, является ли это временным исправлением (при условии, что оно устраняет нашу текущую проблему). Будет ли Сэндкасл просто использовать столько памяти, и нельзя ли попросить его этого не делать? - person Lasse V. Karlsen; 20.07.2009
comment
Простите, не могу сказать. Мой ответ - в основном общие советы по использованию памяти. - person Brian Rasmussen; 20.07.2009