Просмотр актуальных данных в !address REGionUsageIsVAD WinDBG

Я использовал !address -RegionusageIsVAD и нашел запись очень большого размера.

Как я могу просмотреть, кто написал эти данные и какие данные находятся на этом конкретном адресе?

Пример вывода:

099230000 : 099230000 - 01000000
                Type     00020000 MEM_PRIVATE
                Protect  00000004 PAGE_READWRITE
                State    00001000 MEM_COMMIT
                Usage    RegionUsageIsVAD

Поэтому я хочу посмотреть, какие данные находятся в этом адресе и кто их выделил.


person Andy12    schedule 17.05.2011    source источник


Ответы (1)


Высокий RegionUsageIsVAD обычно происходит по двум причинам:

  • это приложение .NET. В этом случае CLR выделяет блок памяти и выполняет внутри него собственное выделение. Вы можете решить эту проблему с помощью расширения sos WinDbg и посмотреть, есть ли у вас еще живые объекты.
  • это не приложение .NET. В этом случае приложение вызывает VirtualAlloc для выделения блока памяти. Так как невозможно записать следы для такого распределения, вы можете поставить точку останова на VirtualAlloc и дамп стека для каждого вызова (bp kernel32!VirtualAlloc "kb;gc;"). Это может дать вам подсказки о том, откуда исходит вызов.
person Thierry Franzetti    schedule 21.10.2011