32

Я знаю, что рабочий набор - это фактический объем памяти, который использует процесс, а также, что частные байты - это объем, выделенный на тот случай, если ему понадобится больше.

Итак, я бы добавил эти два, чтобы выяснить, сколько памяти фактически забирается у других процессов в системе?

1 ответ1

46

Боюсь, не все так просто. В частности, частные байты не очень полезны для ответа на вопрос, который вы задаете.

Первое, что нужно иметь в виду, это то, что страница памяти может существовать в основной памяти или во внешнем хранилище (в наши дни "разбиение на диски" или "подкачка"). Второе - это то, что процесс будет иметь частные страницы памяти на своем месте, но также будет использовать объекты на общих страницах, которые другие процессы используют в то же время.

Рабочий набор - это размер страниц, принадлежащих процессу, которые в данный момент хранятся в основной памяти. Когда страница памяти, используемая процессом, перемещается в файл страницы, она удаляется из метрики рабочего набора, а когда она вызывается обратно в основную память, она снова добавляется.

Однако рабочий набор не относится исключительно к памяти, которой владеет ваш процесс. процессы используют много объектов совместно используемой памяти, и размер этих объектов отражается в статистике. к сожалению, когда два процесса совместно используют объект 1 МБ, оба их процесса показывают распределение 1 МБ в рабочем наборе, поэтому, если вы сложите все рабочие наборы, объект 1 МБ будет записан дважды, поэтому накопление всех размеров рабочего набора может в крайних случаях, кажется, превышает размер доступного оперативной памяти. см. больше здесь: http://cybernetnews.com/cybernotes-windows-memory-usage-explained/

Частные байты - это объем файлового пространства страницы, который выделен процессу (не обязательно используется) в случае, когда объем памяти, занимаемый частной памятью процесса, полностью выгружен для замены. В большинстве случаев этот процесс не является полностью (или вообще не) резидентным файлом страницы, поэтому в личных байтах, по-видимому, имеется "пространство" для дальнейшего распределения. Однако это не так.

Однако закрытые байты относятся только к частной памяти процессов, поэтому это значение может не отражать общие ресурсы (даже если общий ресурс используется только этим процессом в настоящее время).

"Рабочий набор Private" ("Private Private bytes WS" или "Private WS" в проводнике процессов в зависимости от версии), вероятно, является наилучшим показателем для вашего использования. он не касается файла подкачки, поэтому вы получаете точное представление о влиянии процессов на физическую память, и он не учитывает вдвое общие объекты. общие объекты подсчитываются один раз (только для процесса, который их создал), но это также означает, что с точки зрения одного процесса вы не записываете, что ваш процесс использует общие объекты, созданные другим процессом, поэтому ваш процесс может использовать больше оперативной памяти для другого машина или в ситуации, когда требовалось создать сам общий объект, а не использовать другой экземпляр его процессов. Диспетчер задач Windows использует рабочий набор private в качестве показателя использования памяти.

надеюсь, это поможет

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .