加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 为什么在64位Windows运行时有2 GB内存限制?

发布时间:2020-12-15 05:22:18 所属栏目:大数据 来源:网络整理
导读:我是一个团队中的一个成员,开发一个Delphi应用程序。内存需求巨大。 500 MB是正常的,但在某些情况下,它出了内存异常。在这种情况下分配的内存通常在1000 – 1700 MB之间。 我们当然需要64位编译器,但现在不会发生(如果发生,我们也必须转换为unicode,但
我是一个团队中的一个成员,开发一个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?

>我应该在boot.ini中设置/ 3GB开关吗?
>我们试过这个,但在一个32位的Windows Server 2003和它似乎限制Windows资源。在日志中使用GDIError的“内存不足”有更多的例外。但也许这在64位操作系统上运行时消失了?

解决方法

如果使用/ LARGEADDRESSAWARE标志编译Delphi应用程序,它将能够在64位操作系统上寻址完整的4GB。否则,当在WOW32中运行时,操作系统假定应用程序期望在32位操作系统上具有相同的环境,这意味着4GB的地址空间,2GB专用于操作系统,2GB分配给应用程序。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读