что означает HANDLE (RefCnt) в windbg? - PullRequest
2 голосов
/ 13 июля 2011

Ниже приведен мой проверочный код объекта 0330e9a8. Я обнаружил, что его корень - это ханл с типом «RefCnt».

Как я могу получить фактический счетчик ссылок на него. И как я мог узнать, КАКОЙ объект получил свою ссылку?

0:042> !GCRoot 0330e9a8 
Note: Roots found on stacks may be false positives. Run "!help gcroot" for
more info.
Scan Thread 5 OSTHread 534
Scan Thread 8 OSTHread 60c
Scan Thread 9 OSTHread 1120
Scan Thread 10 OSTHread 1b30
Scan Thread 11 OSTHread 52c
Scan Thread 12 OSTHread 1da8
Scan Thread 15 OSTHread 1cbc
Scan Thread 19 OSTHread 1808
Scan Thread 22 OSTHread 1b6c
Scan Thread 23 OSTHread 1e70
Scan Thread 0 OSTHread 1a34
Scan Thread 32 OSTHread 1840
DOMAIN(001C1050):HANDLE(RefCnt):d31460:Root:0330edf8(xxxxxxx)->
0330eedc(xxxxxxxxxxxx)->
0330e9a8(xxxxxxxxxxxxxx)

1 Ответ

2 голосов
/ 16 октября 2012

Это дескриптор GC, который поддерживает доступность объектов .NET для неуправляемого кода.например: подписка на событие COM-объекта.

Какие типы корней вы обычно видите при запуске! gcroot и что они означают? ESP: ESP = Расширенный указатель стека, объект используется в стеке Сильный: Сильная ссылка, как правило, статическая переменная WeakLn: Слабая длинная ручка, слабая ссылка, которая отслеживается при финализации (может быть воскрешена) WeakSh: Weak Short Handle, слабая ссылка, не может быть воскрешен Закреплено: Закрепленный объект, прикрепленный по определенному адресу, не может перемещаться во время сбора мусора. RefCnt: ​​ Счетчик ссылок, на который ссылаются, пока счетчик ссылок> 0.

См .: Демонстрация отладки .NET Лабораторная работа 7. Утечка памяти - обзор

...