Windows 中的 RAM、虚拟内存、页面文件以及内存管理

原始产品版本:   Windows 7 Service Pack 1、Windows Server 2012 R2
原始 KB 编号:   2160852

摘要

本文包含有关 32 位版本的 Windows 中的虚拟内存实现的基本信息。

在现代操作系统(如 Windows)中,应用程序和许多系统进程始终使用虚拟内存地址引用内存。 虚拟内存地址会自动转换为硬件 () RAM 地址。 只有操作系统内核的核心部分会绕过此地址转换,并直接使用实际内存地址。

始终使用虚拟内存,即使所有正在运行的进程所需的内存不超过安装在系统上的 RAM 量。

进程和地址空间

例如,所有进程 (运行在 32 位版本的 Windows 下的应用程序可执行文件) 都分配有虚拟内存地址 (虚拟地址 空间) ,范围从 0 到 4,294,967,295 (2*32-1 = 4 GB) ,无论计算机上安装了多少 RAM。

在默认 Windows 配置中,指定此虚拟地址空间的 2 GB (GB) 供每个进程的专用使用,其他 2 GB 在所有进程和操作系统之间共享。 通常, (例如记事本、Word、Excel 和 Acrobat Reader) 仅使用 2 GB 专用地址空间的一小部分。 操作系统仅将 RAM 页面框架分配给所使用的虚拟内存页。

Physical Address Extension (PAE) 是 Intel 32 位体系结构的功能,将物理内存 (RAM) 地址扩展到 36 位。 PAE 不会更改虚拟地址空间大小 (它保持为 4 GB) ,而只是更改处理器可以解决的实际 RAM 量。

在进程中运行的代码使用的 32 位虚拟内存地址与 36 位 RAM 地址之间的转换由计算机硬件根据操作系统维护的转换表自动且透明地进行处理。 任何虚拟内存 (32 位地址) 都可以与 36 位地址 (的任何物理 RAM) 。

下表介绍了自 2010 年 5 月起,各种 Windows 版本 (多少 RAM) :

Windows 版本 RAM
Windows NT 4.0 4 GB
Windows 2000 Professional 4 GB
Windows 2000 Standard Server 4 GB
Windows 2000 Advanced Server 8 GB
Windows 2000 Datacenter Server 32 GB
Windows XP Professional 4 GB
Windows Server 2003 Web Edition 2 GB
Windows Server 2003 Standard Edition 4 GB
Windows Server 2003 Enterprise Edition 32 GB
Windows Server 2003 Datacenter Edition 64 GB
Windows Vista 4 GB
Windows Server 2008 Standard 4 GB
Windows Server 2008 Enterprise 64 GB
Windows Server 2008 Datacenter 64 GB
Windows 7 4 GB

Pagefile

RAM 是一个有限的资源,而对于大多数实际用途,虚拟内存不受限制。 可以有许多进程,并且每个进程都有其自己的 2 GB 专用虚拟地址空间。 当所有现有进程使用的内存超过可用 RAM 时,操作系统会将页面 (4-KB 部分) 一个或多个虚拟地址空间移动到计算机的硬盘。 这将释放该 RAM 帧以用于其他用途。 在 Windows 系统中,这些分页页面存储在分区根目录 (Pagefile.sys) 一个或多个文件中。 每个磁盘分区中可以有一个此类文件。 页面文件的位置和大小在系统属性中配置 (单击 " 高级",单击"性能",然后单击"设置"按钮) 。

用户经常 询问页面文件的大小应怎样? 此问题没有一个答案,因为它取决于已安装的 RAM 量和工作负荷所需的虚拟内存量。 如果没有其他可用信息,则典型的建议是已安装 RAM 的 1.5 倍是一个很好的起点。 在服务器系统上,您通常希望有足够的 RAM,以便永不不足,因此不会使用页面文件。 在这些系统上,维护大型页面文件可能没有用。 另一方面,如果磁盘空间不足,请维护较大的页面文件 (例如,1.5 倍于安装的 RAM) 不会导致问题,这也无需担心其大小。

性能、体系结构限制和 RAM

在任何计算机系统上,随着 (数量的增加,工作量) 性能降低,但以非线性方式增加。 如果负载或需求超过某个点,则会导致性能显著降低。 这意味着某些资源严重不足,已成为瓶颈。

在某些时候,无法增加不足的资源。 这意味着已达到 体系结构 限制。 Windows 中经常报告的一些体系结构限制包括:

  • 2 GB 的共享虚拟地址空间,用于系统 (内核)
  • 每个进程 2 GB 的专用虚拟地址空间 (用户模式)
  • Windows Server 2003 和更早版本 (660 MB 的系统 PTE)
  • Windows Server 2003 和更早版本 (470 MB 的分页池)
  • Windows Server 2003 和更早版本 (256 MB 的非页)

这尤其适用于 Windows Server 2003,但也可能适用于 Windows XP 和 Windows 2000。 但是,Windows Vista、Windows Server 2008 和 Windows 7 并不都共享这些体系结构限制。 此处第 1 (2 个数字的用户和内核内存) 相同,但内核资源(如 PTE 和各种内存池)是动态的。 此新功能支持分页和非分页内存。 这还使 PTE 和会话池增长到超出前面讨论的限制,到整个内核用尽的点。

经常找到和引用的语句,如下所示:

使用终端服务器时,将在使用 4 GB RAM 之前完全使用 2 GB 的共享地址空间。

在某些情况下,这一点可能成立。 但是,必须监视系统,了解它们是否适用于您的特定系统。 在某些情况下,这些语句是特定 Windows NT 4.0 或 Windows 2000 环境的结果,不一定适用于 Windows Server 2003。 对 Windows Server 2003 进行了重大更改,以减少实际上实际上达到这些体系结构限制的可能性。 例如,内核中的某些进程已移动到非内核进程,以减少共享虚拟地址空间中使用的内存。

监视 RAM 和虚拟内存使用情况

性能监视器是监视系统性能和标识瓶颈位置的主要工具。 若要启动性能监视器,请单击"开始",再单击 "控制面板",再单击"管理工具",然后双击"性能 监视器"。 以下是一些重要计数器的摘要及其告诉您的:

  • 内存、已提交字节数:此计数器是虚拟内存需求的度量。

    这显示进程分配的字节数,以及操作系统已提交 RAM 页面框架或页面文件中页面 (或可能同时提交) 。 随着 提交 字节数增长大于可用 RAM,分页将增加,并且所使用的页面文件大小也将增加。 有时,分页活动开始显著影响性能。

  • 进程、工作_Total:此计数器是活动使用中的虚拟内存 度量。

    此计数器显示所需的 RAM 量,以便用于所有进程虚拟内存在 RAM 中。 此值始终是 4,096 的倍数,即 Windows 中使用的页面大小。 随着对虚拟内存的需求超过可用 RAM,操作系统会调整进程的工作集内虚拟内存量,以优化可用 RAM 使用率并最小化分页。

  • 分页文件,使用的 %pagefile:此计数器用于度量实际使用的页面文件量。

    使用此计数器可确定页面文件的大小是否合适。 如果此计数器达到 100,则页面文件已满,并且内容将停止工作。 根据工作负荷的不稳定情况,你可能希望页面文件足够大,以便使用的页面文件不超过 50-075%。 如果使用许多页面文件(在不同物理磁盘上具有多个页面文件)可能会提高性能。

  • 内存、页数/秒:此计数器是最不安全度量之一。

    此计数器的高值不一定意味着性能瓶颈源于 RAM 不足。 操作系统将分页系统用于交换页面的目的,而不是由于内存过度承诺而交换页面。

  • 内存、页面输出/秒:此计数器显示每秒写入页面文件以释放 RAM 页面框架以用于其他目的的虚拟内存页数。

    如果您怀疑分页是性能瓶颈,则这是要监视的最佳计数器。 即使提交字节数大于已安装的 RAM,如果页面输出/秒在大多数情况下都较低或为零,则 RAM 不足时没有明显的性能问题。

  • 内存、缓存字节、内存、池非分页字节、内存、池分页字节、内存、系统代码总字节数、内存、系统驱动程序总字节数:

    这些计数器的总和是实际使用 4 GB 虚拟地址空间的 2 GB 共享部分的多少的度量。 使用这些项可以确定系统是否达到前面讨论的体系结构限制之一。

  • 内存、可用 MBytes:此计数器测量多少 RAM 可用于满足虚拟内存需求 (新分配,或用于从页面文件还原页面) 。

    当 RAM 不足时 (例如,"提交字节数"大于安装的 RAM) ,操作系统将尝试将未处于活动状态的虚拟内存页复制到页面文件,以保留安装的 RAM 的一定比例,以立即使用。 因此,此计数器不会达到零,也不一定是表明系统是否缺少 RAM 的良好指示。

参考

地址窗口扩展