Я ищу способ определить память, которую процесс действительно использует (а не просто выделил).
Глядя на procmon.exe или vmmap.exe соответствующие значения:
Частные байты
Вся память выделена.
Рабочий набор
Используется память в физической памяти.
Предположим, что private bytes = 3 GB
а working set = 200 MB
. В лучшем случае процесс использует только 200 МБ, а остальное просто выделяется и не используется. В худшем случае он использует все 3 ГБ, и 2,8 ГБ заменяются на файл подкачки.
(Я прочитал вопросы. Сколько памяти реально использует мое приложение для Windows? и что такое частные байты, виртуальные байты, рабочий набор, но они не отвечают на мой вопрос.)
Есть ли способ найти реальное использование памяти процесса?
Редактировать:
Для меня используется память - это объем выделенной памяти, который был заполнен.
При выделении 3 ГБ «ничего» не происходит. Память просто зарезервирована для процесса. Частные байты увеличиваются, но рабочий набор остается неизменным. После заполнения 200 МБ выделенной памяти это отображается на рабочем наборе.
Это 200 МБ используемой / заполненной памяти - это то, что я ищу, независимо от того, был ли он полностью в рабочем наборе или был заменен.