Почему дамп процесса .NET увеличивает использование памяти - PullRequest
1 голос
/ 03 февраля 2010

У нас есть сервис .NET, который использует ~ 30 МБ памяти при запуске.(ВМ ~ = использование памяти)
Я хотел вывести процесс и выяснить, что удерживает эти 30 МБ.

Отладчик CDB, генерирующий мини-дамп , увеличил использование памяти на 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)

Использование памяти остается высоким, долго после отладчикаотсоединена.Я хочу знать, что является причиной загрузки изображения / памяти?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 10 февраля 2010

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

Я получил ответ от Ивана Бругиоло и Павла Лебединского .

0 голосов
/ 03 февраля 2010

Вы можете использовать профилировщик для анализа потребления памяти.

  1. NProfiler - foss
  2. NCover - не бесплатно
...