【问题标题】:Private working set size dependent on application name私有工作集大小取决于应用程序名称
【发布时间】:2010-10-08 14:09:39
【问题描述】:

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

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

有人知道这是什么原因吗?

【问题讨论】:

  • 原来的名字是我们应用的名字,但名字似乎并不重要。该行为似乎只发生在开发人员的机器上。如果我在我的 64 位 XP 机器上运行这两个版本,那么我会得到相同的更大值的工作集大小。即使在重新启动后,该行为也是可重复的。

标签: c++ windows memory


【解决方案1】:

这通常发生在满月期间。

他还记得把一只鸡献给记忆之神Ba'al-ze-Bool吗?

【讨论】:

  • 显然他牺牲了他的第一个孩子。我确实告诉他,一个系统管理员的孩子就足够了。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    另一方面,“私有字节”值在测量应用程序的内存占用时最有用。该值反映了应用程序为分配更多内存而发出的请求总量,并且与当时恰好换入了多少应用程序的工作集无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      • 2013-03-05
      • 1970-01-01
      相关资源
      最近更新 更多