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

发布于 2024-11-08 15:19:50 字数 210 浏览 3 评论 0原文

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

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

工作集中额外的内存是由什么造成的?

我怀疑可能是dll加载,但是我怎样才能确认这一点并分解它呢?

C++ native code running on Windows 7. VS2008.

A particular state change on my application increases the working set (private working set) from 16Mb(6.5Mb) to 38Mb(22Mb). As this seemed excessive I examined the heap change using umdh. The difference between the heap before and after I find an increase of ~9Mb.

What accounts for the additional memory in the working set?

I suspect it might be dll loading, but how can I confirm this and break it down?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晌融 2024-11-15 15:19:50

当应用程序请求内存时,窗口会提供比其要求的更多的内存,以便所有应用程序的后续请求不会导致过多的碎片。例如,您要求一次 1 个字节,您的工作集不会一次增加 1 个字节或一次按页增加,但可能一次增加兆字节。工作集是物理内存中的页面。如果其他东西需要的话,窗户也可以带走你多余的东西。

When an application requests memory windows gives it much more than it asks for so that subsequent request from all apps does not result in excessive fragmentation. For example you ask for 1 byte at a time your working set will not grow 1 byte at a time or by page at a shot but could be by megabytes at a shot. Working set are the pages in physical memory. Also windows can take the excess away from you if something else needs it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文