Почему Process.WorkingSet> Process.MaxWorkingSet? - PullRequest
5 голосов
/ 12 сентября 2011

Праздное любопытство ...

Я смотрю на некоторые свойства текущего процесса:

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

Это не тот случай, кто-нибудь может объяснить, почему?

Ответы [ 2 ]

2 голосов
/ 11 октября 2011

MaxWorkingSet и MinWorkingSet - это значения, возвращаемые Win32 API GetProcessWorkingSetSize . Это ограничения, используемые виртуальным менеджером, которые будут применяться при нехватке памяти. Пока доступно достаточно памяти, текущему размеру рабочего набора разрешается расти больше, чем значение в MaxWorkingSet.

1 голос
/ 12 сентября 2011

Хотя MSDN на самом деле не полезен в этом случае , небольшое исследование с Process Explorer с другой стороны показало, что значения для Private Memory / MaxWorkingSet и Shared Memory / WorkingSet почти точно совпадают.

Что заставляет меня верить (да, мне не хватает веских доказательств), что MaxWorkingSet действительно отображаетличная память, в то время как WorkingSet64 отображает всю память, включая общую.

Я знаю, что говорит MSDN ... и мне все равно, я вижу что-то другое в процессеПроводник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...