1

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

Я понимаю, что частный рабочий набор диспетчера задач превышает частные байты монитора производительности, поскольку я знаю, что частный рабочий набор включает общую память. Но значит ли это что-то особенное, если приватный рабочий набор меньше приватных байтов?

1 ответ1

0

Частный рабочий набор - это физическая память (RAM), Private Bytes - виртуальная. (В некоторых местах это называется "частное обязательство".) Частный рабочий набор - это подстраиваемое или резидентное подмножество частных байтов. Так что это вполне ожидаемое поведение.

Обратите внимание, что разница не обязательно "выгружается на диск". Частная память, которая была зафиксирована, но на которую еще не ссылались, не занимает ни ОЗУ, ни файловое пространство на диске.

Это легко проверить с помощью инструмента sysinternals testlimit. С опцией -m он фиксирует личное виртуальное адресное пространство, но не ссылается на него, поэтому распределение отображается в "частных байтах", но не отображается в рабочем наборе ИЛИ в используемом пространстве файла подкачки. Опция -d - это фиксация, но она также "затрагивает" (записывает) виртуальную память, что вызывает ее "сбой", и только тогда ОС выделяет для нее оперативную память.

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