Почему процесс сброса .NET увеличивает использование памяти
-
25-09-2019 - |
Вопрос
У нас есть услуга .NET, используя ~ 30 МБ памяти при запуске. (Vm ~ = mem memorage)
Я хотел бросить процесс и узнать, что удерживает эти 30 МБ.
Отладчик CDB, создающий мини-дамп Увеличение использования MEM на 100 МБ.
От свалки я мог видеть, что эти 100 МБ были памятьми изображениями (DLL)
-------------------- Usage SUMMARY -------------------------- TotSize ( KB) Pct(Tots) Pct(Busy) Usage 2d07000 ( 46108) : 02.20% 28.45% : RegionUsageIsVAD 761ac000 ( 1935024) : 92.27% 00.00% : RegionUsageFree 64b0000 ( 103104) : 04.92% 63.62% : RegionUsageImage 900000 ( 9216) : 00.44% 05.69% : RegionUsageStack 9000 ( 36) : 00.00% 00.02% : RegionUsageTeb 380000 ( 3584) : 00.17% 02.21% : RegionUsageHeap 0 ( 0) : 00.00% 00.00% : RegionUsagePageHeap 1000 ( 4) : 00.00% 00.00% : RegionUsagePeb 1000 ( 4) : 00.00% 00.00% : RegionUsageProcessParametrs 2000 ( 8) : 00.00% 00.00% : RegionUsageEnvironmentBlock Tot: 7fff0000 (2097088 KB) Busy: 09e44000 (162064 KB)
Использование MEM остается высоким, долго после отладки отладчика. Я хочу знать, что такое корпус Это изображение нагрузки / памяти?
Спасибо.
Решение
«Как правило, неиспользуемые страницы не являются частью рабочего набора, всего лишь адресного пространства. Когда вы создаете полный дамп, все страницы в адресном пространстве находятся и записаны на диск. До тех пор, пока размер Дамп в основном эквивалентен размеру адресной площади процесса, что вы описываете, ожидается ».
Я получил ответ от Иван Брюгиоло и Павел Лебединский.
Другие советы
Вы можете использовать профилировщик для анализа потребления памяти.
- Nprofiler. - Фосс
- Носитель - не бесплатно