在Windows 7上运行的C++本机代码。VS2008。

我的应用程序上的特定状态更改将工作集(私有(private)工作集)从16Mb(6.5Mb)增加到38Mb(22Mb)。由于这似乎过多,我使用umdh检查了堆更改。我发现之前和之后的堆之间的差异增加了〜9Mb。

是什么导致工作集中的额外内存?

我怀疑这可能是dll加载,但是如何确认并分解?

最佳答案

当应用程序请求内存时,窗口会提供超出其要求的内存,因此来自所有应用程序的后续请求不会导致过多的碎片。例如,您一次请求1个字节,您的工作集一次将不会增长1个字节,一次不会按页增长,而是一次可能以兆字节增长。工作集是物理内存中的页面。如果有其他需要,窗户也可以将多余的东西带走。

关于c++ - 是什么解释了堆大小(如umdh报告)和(私有(private))工作集(如任务管理器报告)之间的差异?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6043434/

10-10 14:17