Rol*_*son 31 delphi win64 delphi-2007
我是开发Delphi应用程序的团队的成员.内存需求量很大.500 MB是正常的,但在某些情况下它会出现内存异常.在这种情况下分配的内存通常在1000 - 1700 MB之间.
我们当然需要64位编译器,但现在不会发生(如果它发生,我们也必须转换为unicode,但这是另一个故事......).
我的问题是为什么在64位环境中运行时每个进程有2 GB的内存限制.指针是32位,所以我认为4 GB是正确的限制.我使用Delphi 2007.
编辑: 所以如果我使用以下方法在Delphi中设置IMAGE_FILE_LARGE_ADDRESS_AWARE标志:
{$SetPeFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
并在Windows Server 2003 x64上运行生成的Exe文件,然后该应用程序可以处理4 GB?
Tho*_*mas 32
如果使用/ LARGEADDRESSAWARE标志编译Delphi应用程序,它将能够在64位操作系统上处理完整的4GB.否则,当在WOW32中运行时,操作系统假定应用程序期望与32位操作系统相同的环境,这意味着4GB的地址空间,2GB专用于操作系统,2GB分配给应用程序.
小智 14
Delphi中用于在PE可执行文件中设置LARGEADDRESSAWARE标志的语法是:
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
把它放在你的.dpr文件中.
http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
每个32位进程的用户模式虚拟地址空间:2 GB