Microsoft советует использовать переключатель / 3Gb в Boot.ini, чтобы получить больше памяти для процесса, работающего в 32-битной системе.
Сейчас мне нужно много памяти для девенв процесс (Visual Studio 2008), потому что у меня есть сложное решение, которое включает множество проектов и форм и требует много ресурсов во время разработки.
Хотел бы спросить, если кто-нибудь знает, каковы отрицательные стороны использования переключателя / 3Gb, есть ли обстоятельства, при которых его использовать не рекомендуется.
На настольной машине проблем скорее всего нет. Выгружаемый пул ядра меньше на машине W2K3 / WXP с переключателем / 3GB. Вероятно, это не проблема для настольного компьютера, потому что вы не должны приближаться к исчерпанию выгружаемого пула ядра. На сервере исчерпание выгружаемого пула ядра вызовет проблемы, и гораздо более вероятно, что вы его исчерпаете.
Вот несколько хороших подробностей о том, что касается памяти ядра, связанной с переключателем / 3GB. Если вы действительно хотите, вы можете запустить отладчик ядра NT и профилировать свою систему до и после изменения с информацией в этом документе: http://blogs.technet.com/markrussinovich/archive/2009/03/26/3211216.aspx
Прежде чем вносить какие-либо изменения, вы должны сначала проверить, связаны ли процессы, которые вы хотите запустить, с флагом LARGEADDRESSAWARE. С флагом не будет никаких изменений в том, как процесс использует память.
Для этого вы можете использовать SDK Tools:
dumpbin / заголовки exeName
Выдаваемые заголовки должны включать:
Приложение может обрабатывать большие (> 2 ГБ) адреса
Я проверил devenv.exe, и в VS2008 он включает флаг.
У вас будет меньше памяти, доступной для вашего ядра - переключатель регулирует разделение адресного пространства режима ядра / адресного пространства пользовательского режима, ранее от 2 ГБ до 2 ГБ, с 1 ГБ до 3 ГБ. Читать Сообщение Раймонда Чена на / 3GB и последующие действия, прежде чем продолжить.
Множество недостатков. По умолчанию Windows выделяет каждому процессу пул памяти размером 4 ГБ, который распределяется 50/50 между процессами режима ядра (общий для всех приложений) и процессами пользовательского режима (уникальными для каждого приложения) (упрощенное объяснение). Таким образом, приложение, работающее в системе, имеет 2 ГБ памяти для игры, а сама система имеет собственные 2 ГБ. Важное примечание: эти вторые 2 ГБ - это те же 2 ГБ для всех приложений, работающих в системе.
Переключатель / 3GB регулирует разделение таким образом, что режим ядра получает 1 ГБ, а пользовательский режим - 3 ГБ.
Теперь подумайте, какие приложения вы используете. Некоторым из них потребуется больше места в режиме ядра, другим - больше места в пользовательском режиме. Поскольку пул режима ядра является общим, у вас может очень быстро закончиться нехватка памяти, если вы запускаете приложения, которые создают нагрузку на память режима ядра. С другой стороны, если ваши приложения используют много памяти пользовательского режима, реализация / 3GB даст им необходимый запас.
Так что все зависит от природы приложений, которые вы хотите запустить. Золотое правило - проконсультироваться с поставщиком приложения и прочитать документацию; в частности, если у поставщика приложения нет рекомендаций в любом случае, вы должны начать подозревать ... правильно ли они протестировали свое приложение или нет? Это базовая информация, которую должен знать каждый поставщик.
Здесь есть довольно хорошее обсуждение всего этого: http://blogs.technet.com/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx
В вашем конкретном случае, я думаю, переход на 64-битную версию и увеличение объема оперативной памяти будет более жизнеспособным решением, поскольку / 3GB действительно не даст вам того, что вы хотите (работает ли это даже на XP?)
Мы использовали его на паре систем, в которых были запущены приложения для обработки изображений с большим количеством больших изображений, и никогда не замечали никаких проблем. В любых ситуациях, когда вам нужен дополнительный гигабайт памяти приложения, вы, вероятно, позволите приложению работать и больше ничего не делать с системой, так что это, вероятно, не окажет большого влияния.
Я видел, как это странным образом мешает работе видеокарт. Но любой драйвер может неправильно работать с этим переключателем, если он неправильно написан.
Иногда эти проблемы можно обойти, добавив переключатель / USERVA.
http://support.microsoft.com/kb/319043
http://support.microsoft.com/kb/833721
http://support.microsoft.com/kb/839490
http://support.microsoft.com/kb/316739
Он работает надежно (за исключением отладки драйверов и т. Д.) Только на корпоративной серверной ОС для двоичных файлов LARGEADDRESSAWARE.
devenv не такой двоичный. Например, SQL Server и Exchange.
Вам понадобится x64-битная ОС и VS x64 редактировать: LARGEADDRESSAWARE обнаружен на x64 чтобы преодолеть ограничение в 2 ГБ.