1

我认为这个问题听起来很清楚,但需要进一步解释:

假设我们有一台装有 8GB RAM 的 Windows 7 x64 PC;(64位操作系统和32位进程是我的意图

问题一:64位进程在这种环境下可以使用多少内存?

问题2:这个环境下32位进程可以使用多少内存?

问题3:如果32bit进程在这种环境下只能使用2GB内存(即使是LARGE ADDRESS SPACE AWARE: 3gb),但是大多数游戏都是32bit的;那么这是否意味着:虽然我们安装了8gb的内存,例如游戏在任何给定时间只能使用 2-3gb 的 RAM?

4

3 回答 3

1

问题一:64位进程在这种环境下可以使用多少内存?

它可以使用你所有的内存

问题2:32位进程在这种环境下可以使用多少内存?

对于 x64 机器上的 x86 可执行文件,它默认消耗 2GB。如果 IMAGE_FILE_LARGE_ADDRESS_AWARE 设置它可以使用4GB微软_

有趣的是,如果未设置或清除 IMAGE_FILE_LARGE_ADDRESS_AWARE,则 x64 可执行文件在 x64 机器上最多可以使用2GB 。

问题3:(我不确定)如果32位进程在这种环境下只能使用2GB的ram,(即使它是LARGE ADDRESS SPACE AWARE:3gb),另一方面(据我所知)大多数的游戏是 32 位的;这是否意味着:虽然我们安装了 8gb 的内存,但(例如游戏)在任何给定时间只能使用 2-3gb 的内存????

没有它的4GB

于 2012-12-30T08:53:29.410 回答
1

在像 Windows 这样的按需分页保护模式操作系统上,可用的 RAM 量与进程可以使用的虚拟内存量完全无关。限制因素是分页文件可以支持多少虚拟内存。Windows 中的分页文件以在启动时和注册表设置时确定的大小开始。从那里,当进程需要更多内存时,Windows 可以在必要时增加页面文件的大小。

64位进程可以使用这个环境多少内存?

这是不可预测的,但至少与页面文件中的当前可用空间一样多。您通常会获得大约 13 GB 的数据。这个空间可以突飞猛进地增长,在程序的第二次运行时,它可能会消耗更多的内存,因为 Windows 会赶上并增加页面文件。您可以在Mark Russinovich的这篇博客文章中看到这一点。

在这种环境下 32 位进程可以使用多少内存?

默认为 2 GB。程序的 EXE 标头中的大地址感知选项位可以将其扩展到 4 GB。大多数 32 位程序将关闭此选项位。

如果一个 32 位进程在这种环境下只能使用 2GB 的内存...

它是 2 或 4 GB,而不是 3。再次强调,它与 RAM 无关。即使在具有 8 GB RAM 的机器上,LAA 的 32 位进程也不太可能消耗 4 GB RAM。RAM 是一种共享资源,所有进程都需要其中的一部分。消耗 4 gig 的 32 位进程很可能会将其中的一些页面换出。

于 2012-12-30T09:25:48.537 回答
0

Win32 应用程序,x64 操作系统:

  • 同时地:
    • 高达 2 GB 的地址空间(由于碎片等原因,有效数量较小)
    • 如果进程二进制文件标有 /LARGEADDRESSAWARE,则最多 4 GB 的地址空间
  • 不一定同时,通过内存映射文件,映射/取消映射感兴趣的视图
    • 所有可用内存,特别是 4 GB 及更多
于 2012-12-30T09:24:57.543 回答