【问题标题】:How can a 32-bit process use nearly 4GB memory?一个 32 位进程如何使用将近 4GB 的内存?
【发布时间】:2012-07-01 13:19:17
【问题描述】:

我认为 32 位进程最多可以使用 2GB RAM,因为一半的地址空间是为操作系统保留的(使用 /3GB 开关可能是 3GB)。然而,星际争霸 II 设法使用了将近 4GB 的空间,而且它是一个 32 位的 EXE。 Process Explorer 显示:

4,000,896 KB private bytes
3,928,164 KB working set

它是如何做到这一点的,我如何在我自己的程序中做到这一点?在.NET中是否可能?在非托管 C++ 中?以某种方式在托管 C++ 中?

【问题讨论】:

    标签: memory 32-bit virtual-memory


    【解决方案1】:

    在 64 位操作系统上,32 位进程几乎可以使用 4GB。

    标记为“大地址空间感知”的进程在 32 位操作系统中最多可使用 3GB,在 64 位操作系统中最多可使用全部地址空间。

    这里有更多关于它的讨论:Can a 32bit process access more memory on a 64bit windows OS?

    【讨论】:

    • 谢谢,这解释了。我想没有 .NET 等价物?
    • 应该支持...这里有一个关于如何做的问题stackoverflow.com/questions/1346480/…(我认为VS/CSC中有一个选项,但没有-需要使用相同的editbin作为 Win32 应用程序)。
    猜你喜欢
    • 2012-12-21
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2010-12-23
    • 2017-06-05
    • 1970-01-01
    • 2013-03-25
    相关资源
    最近更新 更多