有哪些不同的CLR句柄类型?

时间:2013-09-09 04:53:36

标签: .net debugging clr

我一直在观看Mario Hewardt关于 .NET Internals和高级调试技术的Pluralsight课程,我在CLR中遇到了句柄的概念。

现在我已经找到了awesome SO answer关于句柄的内容,但是Mario引用句柄类型:

  • 强手柄
  • 固定手柄
  • 异步固定句柄(SO description
  • Ref Count Handle
  • 弱长柄
  • 弱短柄
  • 其他手柄

视频中没有真正解释过,我认为对于参加此课程的人来说,这是预期的知识。

我做过谷歌并且无法找到令人满意的描述,所以我希望SO用户可以帮助我。

1 个答案:

答案 0 :(得分:6)

我在windbg的笔记中找到了这个:

  • #ESP - ESP =扩展堆栈指针,对象正在堆栈中使用(注意,!gcroot可能会在这里返回误报,读取!在windbg中帮助gcroot)

  • #DOMAIN(x):HANDLE(强) - 强引用,通常是静态变量

  • #DOMAIN(x):HANDLE(WeakLn) - 弱长句柄,通过定稿跟踪的弱引用(可以复活)

  • #DOMAIN(x):HANDLE(WeakSh) - 弱手柄,弱参考,无法复活

  • #DOMAIN(x):HANDLE(固定) - 固定在特定地址的固定对象在垃圾回收期间无法移动。

  • #DOMAIN(x):HANDLE(RefCnt) - 引用计数,只要引用计数为> 0

我很早以前从一些MSDN博客那里得到它,我相信它可能是Tess',但我现在无法完全追踪它。 (顺便说一句,如果你正在进行.net调试而且你还不知道它并且想要使用windbg / sos / sosex,那么这就是学习的地方。)

Alejandro Campos Magencio也有a fine series of articles调试windbg和sos;在part 3中,您可以找到大多数GC句柄类型定义的确认。