为什么Process.WorkingSet> Process.MaxWorkingSet?

Joe*_*Joe 5 .net process working-set

闲暇的好奇心......

我正在研究当前流程的一些属性:

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
}
Run Code Online (Sandbox Code Playgroud)

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

MinWorkingSet <= WorkingSet <= MaxWorkingSet
Run Code Online (Sandbox Code Playgroud)

事实并非如此,任何人都可以解释原因吗?

小智 3

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