我是一个参与开发 Delphi 应用程序的团队成员。该应用程序的内存需求很大,通常情况下为 500MB,但有时会出现内存不足异常。在这些情况下分配的内存通常在 1000-1700MB 之间。
我们当然希望使用 64 位编译器,但现在不可能实现(即使实现了也必须转换为 Unicode,但这又是另一回事...)。
我的问题是,为什么在 64 位环境中运行时每个进程有2GB的内存限制?指针是32位的,因此我认为4GB应该是正确的限制。 我使用的是 Delphi 2007。
编辑: 所以如果我在 Delphi 中设置 IMAGE_FILE_LARGE_ADDRESS_AWARE 标志,可以用以下方法:
我们当然希望使用 64 位编译器,但现在不可能实现(即使实现了也必须转换为 Unicode,但这又是另一回事...)。
我的问题是,为什么在 64 位环境中运行时每个进程有2GB的内存限制?指针是32位的,因此我认为4GB应该是正确的限制。 我使用的是 Delphi 2007。
编辑: 所以如果我在 Delphi 中设置 IMAGE_FILE_LARGE_ADDRESS_AWARE 标志,可以用以下方法:
{$SetPeFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
如果在Windows Server 2003 x64上运行生成的Exe文件,该应用程序能够访问4 GB吗?
- 我应该在boot.ini中设置/3GB开关吗?
- 我们尝试过在32位Windows Server 2003上这样做,但似乎会限制Windows资源。日志中会有更多的"GDIError内存不足"异常。但是在64位操作系统上运行时,这可能会消失吗?