ThreadWaitReason - поток ожидает поступления в память страницы виртуальной памяти. - PullRequest
3 голосов
/ 18 ноября 2011

У меня есть приложение WPF (C # 3.5), в котором есть тонны потоков ... в последнее время мои потоки зависают на ThreadWaitReason PageIn (мне удалось обнаружить его с помощью Memory Profiler). Я могу понять сообщение, я не уверен в том, что оно на самом деле означает, и как я могу избежать / обойти эту проблему ... Ваша помощь очень ценится! Большое вам спасибо!

Статистика
Потребление памяти: 456 МБ
Частные байты: 364 МБ
Использование приватных байтов .NET: 150 МБ
ProcessThreads: 76 (все они в состоянии ожидания, причина ожидания потока: pagein

Инструмент предупреждает сообщение: «Фрагментация памяти ограничивает размер объектов, которые могут быть выделены».

1 Ответ

1 голос
/ 19 ноября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...