SandCastle и OutOfMemoryException - PullRequest
1 голос
/ 20 июля 2009

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

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

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

1 Ответ

1 голос
/ 20 июля 2009

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

Вы можете получить доступ к большему объему памяти с помощью переключателя с большим адресом, но он не предоставляется бесплатно, если вы работаете в 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

...