Назад | Перейти на главную страницу

Что означает этот дамп памяти IIS? (зарезервированная память)

Мои w3wp перерабатываются каждые 60 секунд после использования слишком большого количества виртуальной памяти.

Я запустил Средство диагностики отладки IIS захватить дамп памяти до перезапуска рабочего процесса; кажется, самая интересная часть такова:

Virtual Allocation Summary

Reserved memory 4.88 GBytes  
Committed memory 328.27 MBytes  
Mapped memory 17.36 MBytes  
Reserved block count   524 blocks  
Committed block count   1082 blocks  
Mapped block count   43 blocks

Так что 4,88 ГБ зарезервированной памяти кажутся действительно большими. Но ни DotNetMemoryAnalysis, ни обычный анализатор давления памяти, кажется, не говорят мне, куда делись эти 4,88 ГБ.

Как я могу узнать?

Виртуальная память не является дефицитным ресурсом. Операционная система может создавать их огромные количества практически без затрат. Так что нет причин беспокоиться о потреблении виртуальной памяти. Вы можете просто игнорировать это. Дэвид Ван очень подробно рассматривает этот конкретный вопрос в Сообщение блога если вы хотите мельчайших деталей.

Все, что перерабатывается на основе потребления виртуальной памяти, необходимо изменить, чтобы этого не произошло, поскольку это не имеет смысла. Если вы сопоставите память с файлом размером 4 ГБ, вы будете использовать 4 ГБ виртуальной памяти, хотя реальные системные ресурсы, необходимые для этого, тривиальны. (И он не будет отображаться как отображенная память, потому что «отображенная память» учитывает только страницы, в которых произошел сбой.)

Переработка процессов на основе виртуальной памяти совершенно бесполезна.