Чем объясняется разница между размером кучи (как сообщает umdh) и (частным) рабочим набором (как сообщает диспетчер задач)?

Нативный код C++, работающий на Windows 7. VS2008.

Конкретное изменение состояния моего приложения увеличивает рабочий набор (частный рабочий набор) с 16 МБ (6,5 МБ) до 38 МБ (22 МБ). Поскольку это казалось чрезмерным, я исследовал изменение кучи с помощью umdh. Разница между кучей до и после я нахожу прирост ~9Мб.

Чем объясняется дополнительная память в рабочем наборе?

Я подозреваю, что это может быть загрузка DLL, но как я могу подтвердить это и сломать его?

1 ответ

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

Другие вопросы по тегам