Файлы с отображенной памятью: как контролировать использование памяти - PullRequest
6 голосов
/ 07 марта 2011

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

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

Ответы [ 2 ]

1 голос
/ 23 марта 2011

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

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

0 голосов
/ 08 марта 2011

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

...