Файлы с отображением памяти: как отслеживать использование памяти

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

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


person Community    schedule 07.03.2011    source источник
comment
Он должен отображаться в разделе «Процесс» -> «Байты файла подкачки».   -  person John    schedule 07.03.2011


Ответы (2)


Решение заключалось в мониторинге моего приложения с помощью VMMap от sysinternals. Это разбивает использование памяти приложениями по типу выделения (мои файлы с отображением памяти называются «общими»), а также по состоянию (в памяти или выгружены).

Есть даже графическая карта фрагментации памяти!

person Community    schedule 23.03.2011

Вызовите QueryWorkingSet и подсчитайте количество страниц, которые находятся в пределах сопоставленного диапазона для определить, какая часть вашей памяти является частью рабочего набора. Но имейте в виду, что страницы могут быть исключены из рабочего набора, но все еще находиться где-то в физической памяти.

person wj32    schedule 08.03.2011
comment
Интересный! Здесь может быть одна загвоздка: Windows могла удалить страницы из моего рабочего набора, когда я какое-то время не обращаюсь к ним. Я предполагаю, что окна будут хранить их в физической памяти, если кому-то еще не понадобится память. - person ; 08.03.2011