Process Explorer:"提交历史记录"图表显示了什么?

Ash*_*ppa 14 windows memory-management process-explorer

Process Explorer中可用的Memory图中,顶部的图显示了Commit History.这在操作系统级别实际表明了什么?

为了试验这是否是进程在堆上分配的内存,我编写了一个小程序,该程序逐步malloc-ed 100 MB多次.提交历史记录图表增加了一段时间(内存分配高达1.7 GB)并且在此之后没有增长,尽管程序内存存储器.

那么,这个图表表示什么?如何使用这些信息来理解/分析Windows的状态?

P.T*_*.T. 20

提交级别是分配给系统中所有进程的匿名虚拟地址空间量.(它不包括任何文件支持的虚拟地址空间,例如,来自mmap的文件.)在进程资源管理器中,"提交历史记录"图表显示了该值随时间的大小.

由于虚拟内存的分配和分配方式(支持虚拟地址空间页面的实际RAM在第一次触摸之前不一定分配),此当前"提交"级别表示内存的最坏情况(此刻)该系统可能需要提出.与Linux不同,Windows不会为RAM提供承诺(地址空间),也不会伪造(通过分页文件).因此,一旦提交级别达到系统限制(大致为RAM +页面文件大小),新的地址空间分配将失败(但现有虚拟地址空间区域的新用法不会失败).

关于您的系统的一些结论,您可以从这个值中得出:

  • 如果此值小于当前RAM(除了内核和系统开销),那么您的系统不太可能交换(使用分页文件),因为在最坏的情况下,所有内容都应该适合内存.
  • 如果此值远大于物理内存使用量,则某些程序正在分配大量虚拟地址空间,但尚未使用它.
  • 退出应用程序应减少已提交的内存使用量,因为它的所有虚拟地址空间都将被清除.

您的实验验证了这一点.我怀疑你遇到地址空间限制(Windows中的32位进程限制为2GB ......可能300MB消失到碎片,库和文本?).

  • 当你说上面"如果这个值比物理内存使用量大得多,那么一些程序正在分配大量的虚拟地址空间,但还没有使用它." 有没有办法隔离哪个程序正在分配所有的虚拟地址空间?在我的场景中,我有8 GB的RAM,但我看到12.2是系统提交的,6.4使用了物理RAM.当我查看进程资源管理器时,我的框速度变慢了,几乎没有I/O(磁盘上没有任何启动)并且几乎没有CPU使用率这使得我认为它是RAM可用性问题. (2认同)