在Process Explorer中可用的Memory图表中,顶部图表显示了Commit History.这在操作系统级别上实际表明了什么?
要进行实验,如果这是一个进程在堆上分配的内存,我写了一个小程序,增量地malloc-ed 100 MB多次.提交历史记录图表增加了一段时间(高达1.7 GB的内存分配),并且之后没有增长,尽管程序存储内存不足.
那么这个图表是什么?如何使用这些信息来了解/分析Windows的状态?
提交级别是分配给系统中所有进程的匿名虚拟地址空间量. (它不包括任何文件备份的虚拟地址空间,例如,从mmap’d文件.)在进程资源管理器中,“提交历史记录”图表显示该值随时间的大小.
原文链接:/windows/371356.html由于虚拟内存被分配和分配(实际的RAM支持一个虚拟地址空间的页面不一定被分配,直到它的第一次被触摸),这个当前的’提交’级别表示最坏的情况(当时)的内存该系统可能需要提出.与Linux不同,Windows不会向RAM发出承诺(地址空间),无法通过分页文件获取或伪造.因此,一旦提交级别达到系统限制(大致RAM页面文件大小),新的地址空间分配将失败(但是现有虚拟地址空间区域的新用途将不会失败).
关于您的系统的一些结论,您可以从这个值得出:
>如果此值小于当前的RAM(除了内核和系统开销),那么您的系统不太可能进行交换(使用分页文件),因为在最坏的情况下,所有内容都应该适合内存.
>如果这个值远远大于物理内存使用量,那么一些程序正在分配大量的虚拟地址空间,但还没有使用它.
>退出应用程序应该减少提交的内存使用情况,因为它的所有虚拟地址空间将被清理.
你的实验验证了这一点.我怀疑你遇到了地址空间限制(Windows中的32位进程是limited to 2GB …也许300MB消失到碎片,库和文本?).