内存映射文件:如何监控内存使用情况

7
我正在开发一个需要大量内存(高达几GB)的32位终端用户应用程序。最近,我将我们的内部内存分配策略更改为灵感来自于这篇 Raymond Chen 文章的无文件内存映射方式。它运行良好。
唯一的缺点是:如果我用这种方式分配1GB的内存,它在性能计数器中不会显示任何东西。当然,我知道分配了多少内存,其中有多少映射到我的地址空间,但我不知道它如何分配在物理内存和页面文件上。我想知道,即使只是为了调试而记录它。

它应该显示在“进程”->“页面文件字节”下。 - John
2个回答

0
调用QueryWorkingSet并计算位于映射范围内的页面数量,以确定您的内存中有多少部分属于工作集。但请记住,页面可能会被排除在工作集之外,但仍然存在于物理内存中的某个地方。

有意思!但可能会有一个问题:当我很久没访问它们时,Windows 可能已经从我的工作集中移除了这些页面。我假设 Windows 会将它们保留在物理内存中,除非有其他人需要该内存。 - user180326

0

解决方案是使用Sysinternals的VMMap监视我的应用程序。它按分配类型(我的内存映射文件称为“共享”)和状态(在内存中或交换出去)来分解应用程序的内存使用情况。

甚至还有一个图形化的内存碎片图!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接