Windows - 提交大小与虚拟大小

Far*_*ina 36 memory windows virtual-memory

我想知道提交大小(在任务管理器中可见)和虚拟大小(在SysInternals的Process Explorer中可见)之间的确切区别.

Process Explorer中Virtual Size参数看起来更准确地指示进程的总虚拟内存使用情况.但是,提交大小始终小于虚拟大小,我想它不包括进程使用的所有虚拟内存.我希望有人解释这些参数中包含的内容.

Dam*_*mon 56

内存可以保留,提交,首次访问,并成为工作集的一部分.保留内存时,会出一部分地址空间,不会发生任何其他情况.

当内存被提交,操作系统保证了相应的页面可能在原则上存在无论是在物理RAM或页面文件.换句话说,它计入系统总可用页面的硬限制,并正式创建页面.也就是说,它会创建页面并假装它们存在(实际上它们还不存在).

当第一次访问内存时,会创建正式存在的页面,以便它们真正存在.向进程提供零页面,或者从映射将数据读入页面.页面将移动到流程的工作集中(但不一定会永久保留在那里).

每个正在运行的进程都有许多页面,这些页面事实上和逻辑上都在RAM中,即这些页面存在,并且它们也"正式"存在.这是流程的工作集.
此外,每个正在运行的进程都有实际上在RAM中的页面,但不再正式存在于RAM中.它们可能位于所谓的"备用列表"或缓冲区缓存的一部分,或者不同的东西.当访问它们时,OS可以简单地再次将它们移动到工作集中.
最后,每个进程都有完全不在RAM中的页面(在交换时它们还不存在).

虚拟大小包括进程已保留的所有页面的大小.

提交大小仅包含已提交的页面.

也就是说,在外行术语中,"虚拟大小"几乎是你自己的问题,并且只受地址空间大小的限制,而"提交大小"是每个人的问题,因为它消耗全局有限资源(RAM加交换).因此它影响其他过程.

  • 不要将"Commit Size"(由任务管理器报告)与"Committed Pages"混淆."提交大小"是内存映射文件(例如二进制代码页)不支持的内存量."提交页面"是虚拟内存的一部分,包括所有可寻址页面(与免费或保留相对). (2认同)

Han*_*ant 10

提交大小是进程的页面文件中保留的空间量.当需要换出页面以在其他进程的RAM中腾出空间时使用.

是的,虚拟内存大小会更大,因为它包含页面文件不支持的页面.至少EXE中的代码和资源部分以及未重定位的DLL.必要时,可以简单地丢弃这些页面并从文件中重新加载.所有操作系统DLL都适合此类别.此外,进程使用的任何内存映射文件.SysInternals的VMMap实用程序可以提供洞察力.