Как мне использовать! Gcroot - PullRequest
       14

Как мне использовать! Gcroot

4 голосов
/ 22 сентября 2009

Изнутри Visual Studio окно с загруженным расширением отладки SOS я могу сделать

!dumpheap -stat

Тогда я получаю что-то вроде этого:

    total 108,014 objects
    Statistics:
    MT         Count  TotalSize  Class Name
   ...
    0x00be209c 135   714108    System.Object[]
    0x79b925c8 218   2659728  System.String
    0x00be2c3c 78986 10,705,064 System.Byte[]
    Total 208,014 objects, Total size: 36,259,364

Как мне теперь вызвать! Gcroot на некоторых экземплярах System.Byte []? Я сначала должен найти адрес их. Но использование! Dumpheap-type System.Byte [], безусловно, является плохой идеей, потому что это даст мне бесконечный список, и поскольку непосредственное окно кажется медленным, для их перечисления требуется более 20 минут - в то время визуальная студия не годные к употреблению. Есть ли уловка с использованием сценариев, как я могу вызвать! Gcroot для некоторых байтовых массивов?

1 Ответ

2 голосов
/ 22 сентября 2009

Вы можете отфильтровать шум, используя ключи -min -max, я полагаю, что ваша проблема связана с большими объектами, поэтому вызовите! Dumpheap -min -type System.Byte [] где достаточно велико, чтобы отфильтровать шум.

...