【发布时间】:2011-02-19 22:19:12
【问题描述】:
- 当我使用 MEM_COMMIT 执行 VirtualAlloc 时,此“在内存中或磁盘上的页面文件中为指定的保留内存页分配物理存储”(引用自 MSDN 文章 http://msdn.microsoft.com/en-us/library/aa366887%28VS.85%29.aspx)。
到目前为止一切都很好,但是:
提交字节计数器的描述说“提交内存是在磁盘页面文件上保留空间的物理内存。”
我还阅读了“Windows via C/C++ 5th edition”,这本书说提交内存意味着在页面文件中保留空间....
最后两种情况对我来说没有意义...如果您提交内存,这是否意味着您提交物理存储 (RAM)?页面文件用于在内存不足时交换当前未使用的内存页面。
这本书说,当你提交内存时,你实际上在页面文件中保留了空间。如果这是真的,那将意味着对于已提交的页面,页面文件中保留了空间,内存中的物理页面框架......所以需要两倍的空间?!页面文件的目的不是使总物理内存大于实际内存吗?如果我有一个 1G 的 RAM 和一个 1G 的页面文件 => 2G 的可用“物理内存”(这本书也说明了这一点,但紧随其后的是我在第 2 点描述的内容)。
我错过了什么?谢谢。
编辑:我看到它的方式在这里得到了完美的描述:http://support.microsoft.com/kb/555223
“它显示了进程分配了多少字节,以及操作系统在页面文件中提交了 RAM 页框或页槽(可能两者都有)”
但我读过太多与我的信念相矛盾的东西,比如上面的两点和其他类似的东西,例如:http://blogs.msdn.com/ricom/archive/2005/08/01/446329.aspx
【问题讨论】: