Почему предел памяти на 2 ГБ при выполнении в Windows на 64 бита?

Я - участник в команде, которые разрабатывают приложение Delphi. Требования к памяти огромны. 500 МБ нормальны, но в некоторых случаях это вышло из исключения памяти. Память, выделенная в этом случаи, обычно между 1000 - 1700 МБ.

Мы, конечно, хотим компилятор на 64 бита, но этого не произойдет теперь (и если это происходит, мы также должны преобразовать в unicode, но это - другая история...).

Мой вопрос состоит в том, почему там предел памяти для каждого процесса на 2 ГБ при выполнении в среде на 64 бита. Указатель составляет 32 бита, таким образом, я думаю, что 4 ГБ были бы правильным пределом. Я использую Delphi 2007.

Править: Таким образом, если я установил флаг IMAGE_FILE_LARGE_ADDRESS_AWARE в Delphi при помощи:

{$SetPeFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}

И выполняя получающийся EXE-файл на Windows Server 2003 x64 затем приложение может обратиться к 4 ГБ?

  • Я должен установить переключатель/3GB в boot.ini?
  • Мы попробовали это, но на Windows Server 2003 на 32 бита и это, кажется, ограничивает ресурсы окон. Было больше исключений для "Из памяти" с GDIError в журнале. Но возможно это исчезает при выполнении в ОС на 64 бита?
31
задан Roland Bengtsson 30 April 2010 в 06:59
поделиться

3 ответа

Если скомпилировать приложение Delphi с использованием флага /LARGEADDRESSAWARE, то оно сможет адресовать все 4GB на 64-битной ОС. В противном случае, при запуске в WOW32, ОС предполагает, что приложение ожидает ту же среду, что и в 32-битной ОС, что означает, что из 4 ГБ адресного пространства 2 ГБ выделено для ОС и 2 ГБ - для приложения.

32
ответ дан 27 November 2019 в 22:18
поделиться

http://msdn.microsoft.com/en-us/library/aa366778 (VS.85) .aspx

Виртуальный адрес пользовательского режима пространство для каждого 32-битного процесса: 2 ГБ

6
ответ дан 27 November 2019 в 22:18
поделиться

Синтаксис Delphi для установки флага LARGEADDRESSAWARE в исполняемом файле PE:

{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}

Поместите это в ваш файл .dpr.

14
ответ дан 27 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: