私有工作集大小取决于应用程序名称

时间:2009-02-19 12:58:45

标签: c++ windows memory

一位同事一直在努力减少在vista 64上运行的32位应用程序的内存占用,并注意到报告的私有工作集大小有一些奇怪的行为。

他做了一些更改并重新编译了应用程序。然后他运行应用程序并加载到数据文件中。任务管理器报告私有工作集为98Mb。然后他立即将应用程序重命名为'fred.exe',当他运行fred.exe并加载相同的数据文件时,私有工作集报告为125Mb。将文件重命名为其原始名称,重复,私有工作集返回到98Mb。

有谁知道是什么原因引起的?

3 个答案:

答案 0 :(得分:2)

这通常发生在满月时。

他是否记得将一只鸡献给记忆之神Ba'al-ze-Bool?

答案 1 :(得分:2)

Vista正在通过应用程序缓存(SuperFetch)做一些聪明的事情。据我了解,这是由应用程序名称完成的。

在您的情况下,我假设Vista检测到“originalName.EXE”从未从大型工作集中受益,因此将其修剪为98 MB有助于其他应用程序。另一方面,新的“fred.exe”仍然获得默认处理。

答案 2 :(得分:1)

应用程序的“工作集”(大致)当前可以使用多少应用程序的虚拟内存空间。该值由于多种原因而波动,具体取决于机器中的其他内容,并不能真正反映过程的实际内存占用。它当然不依赖于可执行文件的名称。

另一方面,“私有字节”值在测量应用程序的内存占用量时最有用。此值反映了应用程序为分配更多内存而发出的请求总量,并且不依赖于当时交换应用程序的工作集的大小。

相关问题