我正在尝试跟踪应用程序中的内存泄漏,因此我让性能监视器绘制了其私有字节数。有一次,性能监视器显示私有字节数正在上升,但在任务管理器中,私有工作集保持不变且低于私有字节数。
我理解任务管理器的私有工作集高于性能监视器的私有字节,因为我知道私有工作集包括共享内存。但如果私有工作集低于私有字节,这是否意味着什么特殊情况?
答案1
私有工作集是物理内存 (RAM),私有字节是虚拟的。(在某些地方它被称为“私有提交”。)私有工作集是私有字节的分页或“常驻”子集。因此,这是完全可以预料到的行为。
请注意,差异不一定是“分页到磁盘”。已提交但尚未引用的私有内存占用两者都不RAM 和磁盘文件空间。
使用 sysinternals testlimit 工具可以轻松验证这一点。使用 -m 选项时,它会提交私有虚拟地址空间,但不会引用它,因此分配会显示在“私有字节”中,但根本不会出现在工作集或使用的页面文件空间中。使用 -d 选项时,它会提交,但也会“接触”(写入)虚拟内存,这会导致它“出现故障”,然后操作系统才会为其分配 RAM。