5

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

现在我已经找到了关于什么是句柄很棒的答案,但是马里奥指的是句柄类型:

  • 强力手柄
  • 固定手柄
  • 异步固定句柄(SO 描述
  • 参考计数句柄
  • 弱长柄
  • 弱短柄
  • 其他手柄

视频中并未真正解释这些内容,我认为这是参加本课程的人所期望的知识。

我做了一个谷歌,并不能真正找到一个令人满意的描述这些是什么,所以我希望一个 SO 用户可以帮助我。

4

1 回答 1

7

我在windbg的笔记中发现了这一点:

  • #ESP - ESP=扩展堆栈指针,对象正在堆栈上使用(注意,!gcroot 可能会在此处返回误报,请阅读 !help gcroot in windbg)

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

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

  • #DOMAIN(x):HANDLE(WeakSh) - 弱短句柄,弱引用,无法复活

  • #DOMAIN(x):HANDLE(Pinned) - 固定对象,固定在特定地址,在垃圾回收期间不能移动。

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

我很久以前就从一些 MSDN 博客中获取了它,我相信它可能是Tess',但我现在无法准确追踪它。(顺便说一句,如果您正在研究 .net 调试但您还不知道它并想使用 windbg/sos/sosex,那么这里就是学习的地方)。

Alejandro Campos Magencio 也有一系列关于使用 windbg 和 sos 进行调试的精美文章;第 3 部分中,您可以找到对大多数 GC 句柄类型定义的一些确认。

于 2013-10-29T10:44:31.433 回答