Как я могу увидеть объем памяти, который процесс использует, а не просто выделил?

552
marsh-wiggle

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

Глядя на procmon.exe или vmmap.exe соответствующие значения:

Частные байты
Вся память выделена.

Рабочий набор
Используемая память в физической памяти.

Предположим private bytes = 3 GBи тому working set = 200 MB. В лучшем случае процесс использует только 200 МБ, а остальное просто выделяется и не используется. В худшем случае он использует все 3 ГБ, и 2,8 ГБ заменяются на файл подкачки.

(Я читаю вопросы « Сколько памяти реально использует мое приложение Windows?» И « Что такое частные байты, виртуальные байты, рабочий набор, но они не отвечают на мой вопрос».)

Есть ли способ найти реальное использование памяти процесса?

Редактировать:
Для меня используется память - это объем выделенной памяти, который был заполнен.

При выделении 3 ГБ «ничего» не происходит. Память просто зарезервирована для процесса. Частные байты увеличиваются, но рабочий набор остается неизменным. После заполнения 200 МБ выделенной памяти это отображается на рабочем наборе.

Это 200 МБ используемой / заполненной памяти - это то, что я ищу, независимо от того, был ли он полностью в рабочем наборе или был заменен.

1
Какое у вас определение * памяти, которую использует процесс *? gronostaj 9 лет назад 3
@gronostaj отредактировал сообщение, спасибо. marsh-wiggle 9 лет назад 0
ОС не отслеживает, была ли выделена выделенная память или нет. Он отслеживает, какие страницы в настоящее время находятся в физической памяти (рабочий набор) и сколько было выделено (частные байты). Я не думаю, что вы можете найти то, что вы ищете на уровне ОС, это будет функция конкретного приложения. heavyd 9 лет назад 0
@heavyd Система знает, какие страницы, которых нет в рабочем наборе, уже написаны. Это можно легко контролировать. marsh-wiggle 9 лет назад 0
Это хороший вопрос. Меня также смущает то, что эти столбцы должны представлять, и можно ли лучше понять пространство подкачки, используемое процессом. Похоже, что это в основном нет. http://superuser.com/questions/917492/whats-the-total-amount-of-memory-and-swap-a-process-is-using cnst 9 лет назад 0
Частные байты не "вся память, которая была выделена". Выделена память, отличная от памяти частного процесса. Большая часть из них называется «сопоставлены». Jamie Hanrahan 9 лет назад 0

0 ответов на вопрос