Вопрос

У меня есть несколько миллионов предметов, висящих в памяти. Я хочу найти для них GCROOTS, поэтому мне нужен адрес объекта. ! Dimpheap, однако, сбрасывает все предметы, которые занимают больше времени, чем у меня было терпение, чтобы ждать. Как я могу ограничить его вывод только одним адресом объекта? Я использую Visual Studio 2008, кстати.

Это было полезно?

Решение

Джейсон Эванс прав. У моей версии нет переключателя -l, поэтому вот обходной путь, который я использую: я использую конечный параметр, чтобы ограничить выходной сигнал в диапазоне адресов, как это:

!dumpheap -mt 0794f29c 0 04000000

Последний адрес - это самый высокий адрес, который я позволяю. Увеличивая адрес небольшими шагами, я в конечном итоге поразил первые несколько объектов.

Другие советы

!dumpheap -type System.String -short

Только выбросит адрес объектов

Проверить это страница. Похоже, вы можете использовать

-l X

Чтобы ограничить количество показанных элементов.

Лучшее место для начала -аргумент -stat. Это выбросит сводку таблицы живых объектов, а не каждый объект в системе. Это даст вам хорошее представление о том, какие объекты, в частности, вызывают наиболее накладные расходы

!dumpheap -stat

Я также рекомендовал бы взглянуть на следующие статьи в блоге, поскольку они направлены на то, чтобы помочь людям использовать WindBG для отслеживания этой проблемы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top