【问题标题】:What are the different CLR handle types?有哪些不同的 CLR 句柄类型?
【发布时间】:2013-09-12 13:19:05
【问题描述】:

我一直在 .NET Internals and Advanced Debugging Techniques 上观看 Mario Hewardt 的 Pluralsight 课程,并且在 CLR 中遇到了句柄的概念。

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

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

视频中没有真正解释,我认为这是参加本课程的人所期望的知识。

我在 Google 上搜索过,并没有找到令人满意的描述,所以我希望 SO 用户可以帮助我。

【问题讨论】:

    标签: .net debugging clr


    【解决方案1】:

    我在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 也有 a fine series of articles 使用 windbg 和 sos 进行调试;在part 3 中,您可以找到对大多数 GC 句柄类型定义的一些确认。

    【讨论】:

      猜你喜欢
      • 2017-10-07
      • 1970-01-01
      • 2013-06-23
      • 2010-09-27
      • 2012-01-17
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多