c++ - 堆大小(由 umdh 报告)和(私有(private))工作集(由任务管理器报告)之间的差异是什么?

标签 c++ memory-management heap-memory working-set umdh

在 Windows 7.VS2008 上运行的 C++ native 代码。

我的应用程序的特定状态更改将工作集(私有(private)工作集)从 16Mb(6.5Mb) 增加到 38Mb(22Mb)。由于这看起来太过分了,我使用 umdh 检查了堆变化。我发现前后堆之间的差异增加了 ~9Mb。

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

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

最佳答案

当一个应用程序请求内存时,windows 会提供比它要求的更多的内存,这样来自所有应用程序的后续请求就不会导致过多的碎片。例如,您一次请求 1 个字节,您的工作集不会一次增加 1 个字节,也不会一次按页增加,但可能一次增加 MB。工作集是物理内存中的页面。如果其他东西需要它,Windows 也可以带走多余的东西。

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

相关文章:

java - 是否可以按池检查堆内存使用情况?

c++ - 当 vector 在内部类中时,如何删除指向对象的 vector 指针

c++ - 我可以在不使用 FIOCANCEL 的情况下关闭 VxWorks 中的文件描述符吗?

c++ - 是否有固定大小分配器的优雅 C++ 实现?

c# - 64 位 .Net 应用程序中的内存限制?

linux - 计算进程消耗的最大可用存储内存

c++当在 map 中找不到条目时

c++ - 程序不会使用模块、加法和减法进行编译

javascript - 保存更改时 Java 堆空间错误

node.js - RSS 和堆有什么区别?