2011-07-13 9 views
2

オブジェクト0330e9a8のgcrootを確認します。 私はそのルートがそのタイプが "RefCnt"であるハーンであることを発見しました。windbgのHANDLE(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) 

答えて

2

アンマネージドコードで.NETオブジェクトに到達できるようにするGCハンドルです。
たとえば、COMオブジェクトイベントを購読します。

!gcrootを実行する際に通常どんな種類のルートが表示されますか?
ESP:強い参照、典型的には静的変数
WeakLn:弱いロングハンドル、ファイナライズを介して追跡される弱参照 ESP =拡張スタックポインタは、オブジェクトがスタックに使用さ
強力です(復活させることができる)
WeakSh:弱いショートハンドル、弱参照は、固定
を復活することができない。特定のアドレスに固定確保されたオブジェクトは、ガベージコレクション中に動き回ることができません。
REFCNT:リファレンス・カウント限り、参照カウントが> 0

参照であるとして参照:.NET Debugging Demos Lab 7: Memory Leak - Review

関連する問題