5

闲置的好奇心...

我正在查看当前流程的一些属性:

using(Process p = Process.GetCurrentProcess())
{
    // Inspect properties
    // p.MaxWorkingSet = 1,413,120
    // p.MinWorkingSet = 204,800
    // p.WorkingSet = 54,140,928
    // p.WorkingSet64 = 54,140,928
}

根据我对文档的阅读,这些属性都与工作集大小(以字节为单位)有关,因此我期待看到:

MinWorkingSet <= WorkingSet <= MaxWorkingSet

事实并非如此,谁能解释为什么?

4

2 回答 2

2

MaxWorkingSet 和 MinWorkingSet 是 Win32 API GetProcessWorkingSetSize返回的值。这些是虚拟管理器使用的限制,将在内存不足时强制执行。只要有足够的内存可用,就允许当前工作集大小增长到大于 MaxWorkingSet 中的值。

于 2011-10-11T16:00:08.543 回答
1

虽然MSDN 在这种情况下并没有真正的 帮助,但另一方面,使用Process Explorer进行的一项小型调查显示Private Memory/MaxWorkingSetShared Memory/的值WorkingSet几乎完全匹配。

这让我相信(是的,我确实缺乏确凿的证据)MaxWorkingSet确实显示了私人记忆,而WorkingSet64确实显示了完整的记忆,包括共享的记忆。

我知道 MSDN 说什么……我不在乎,我在 Process Explorer 中看到了一些不同的东西。

于 2011-09-12T12:22:59.813 回答