gpt4 book ai didi

c++ - 设置了 LARGEADDRESSAWARE 标志的应用程序获得更少的虚拟内存

转载 作者:可可西里 更新时间:2023-11-01 16:22:37 24 4
gpt4 key购买 nike

我有一个包含一个 EXE 和多个 DLL 的 32 位应用程序。 EXE 已使用 /LARGEADDRESSAWARE 标志集构建。所以我希望在 64 位操作系统上我应该获得 4 GB 的用户地址空间。但在某些 64 位 Win 7 系统上,我只能获得 2 GB 的用户地址空间。

如果重要的话,物理内存为 8 GB。这种行为的原因可能是什么?

最佳答案

通过浏览MSDN后,我发现了以下内容:

关于 http://msdn.microsoft.com/en-us/library/windows/desktop/aa366770(v=vs.85).aspx (GlobalMemoryStatusEx ( http://msdn.microsoft.com/en-us/library/windows/desktop/aa366589(v=vs.85).aspx ) 使用的 MEMORYSTATUSEX 页面)ullTotalVirtual 的描述是:

this value is approximately 2 GB for most 32-bit processes on an x86 processor and approximately 3 GB for 32-bit processes that are large address aware running on a system with 4-gigabyte tuning enabled.

4GB 调优页面为:http://msdn.microsoft.com/en-us/library/windows/desktop/bb613473(v=vs.85).aspx它说的是这样的:

On 64-bit editions of Windows, 32-bit applications marked with the IMAGE_FILE_LARGE_ADDRESS_AWARE flag have 4 GB of address space available.

Itanium editions of Windows Server 2003: Prior to SP1, 32-bit processes have only 2 GB of address space available.

此外,如果您想确定系统支持的总内存,内存限制页面 ( http://msdn.microsoft.com/en-us/library/aa366778.aspx#memory_limits) 会派上用场。

然而,真正有用的信息来自 Mark Russinowich 的博客:http://blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx

While 4GB is the licensed limit for 32-bit client SKUs, the effective limit is actually lower and dependent on the system's chipset and connected devices. The reason is that the physical address map includes not only RAM, but device memory as well, and x86 and x64 systems map all device memory below the 4GB address boundary to remain compatible with 32-bit operating systems that don't know how to handle addresses larger than 4GB.

所以结论是,是的,这可能取决于系统的配置。也许您可以用一张表来完成您的问题,其中包含您在每个系统上获得的内存量和一些重要的系统配置设置,我们可能会在这种情况下发现一种模式。

关于c++ - 设置了 LARGEADDRESSAWARE 标志的应用程序获得更少的虚拟内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25424236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com