Как сбросить только первый адрес объекта!
-
18-09-2019 - |
Вопрос
У меня есть несколько миллионов предметов, висящих в памяти. Я хочу найти для них GCROOTS, поэтому мне нужен адрес объекта. ! Dimpheap, однако, сбрасывает все предметы, которые занимают больше времени, чем у меня было терпение, чтобы ждать. Как я могу ограничить его вывод только одним адресом объекта? Я использую Visual Studio 2008, кстати.
Решение
Джейсон Эванс прав. У моей версии нет переключателя -l, поэтому вот обходной путь, который я использую: я использую конечный параметр, чтобы ограничить выходной сигнал в диапазоне адресов, как это:
!dumpheap -mt 0794f29c 0 04000000
Последний адрес - это самый высокий адрес, который я позволяю. Увеличивая адрес небольшими шагами, я в конечном итоге поразил первые несколько объектов.
Другие советы
!dumpheap -type System.String -short
Только выбросит адрес объектов
Проверить это страница. Похоже, вы можете использовать
-l X
Чтобы ограничить количество показанных элементов.
Лучшее место для начала -аргумент -stat. Это выбросит сводку таблицы живых объектов, а не каждый объект в системе. Это даст вам хорошее представление о том, какие объекты, в частности, вызывают наиболее накладные расходы
!dumpheap -stat
Я также рекомендовал бы взглянуть на следующие статьи в блоге, поскольку они направлены на то, чтобы помочь людям использовать WindBG для отслеживания этой проблемы