【问题标题】:windbg !gcroot <address> returns no rootswindbg !gcroot <address> 不返回根
【发布时间】:2010-10-05 15:03:41
【问题描述】:

如果 !gcroot 返回一个空线程列表是什么意思?

0:000> !gcroot 0000000010817c50 
Note: Roots found on stacks may be false positives. Run "!help gcroot" for
more info.
Scan Thread 2 OSTHread 15a4
Scan Thread 10 OSTHread 1db4
Scan Thread 11 OSTHread 147c
Scan Thread 12 OSTHread 15d4
Scan Thread 14 OSTHread 9dc
Scan Thread 15 OSTHread 12a4
Scan Thread 21 OSTHread 18c4
Scan Thread 23 OSTHread 1260
Scan Thread 24 OSTHread 16c8
Scan Thread 25 OSTHread bd4
Scan Thread 26 OSTHread de8

在执行 !dumpheap -type System.String 时,我有很多条目,但大多数都没有像上面的示例那样返回任何内容。

【问题讨论】:

    标签: memory-leaks windbg sos


    【解决方案1】:

    这些对象没有根,当 GC 运行时,它会收集这些对象。

    【讨论】:

    • @Brian - 同意并会修正答案。
    • 不一定。它们可能会被终结器捕获。
    【解决方案2】:

    如果你说你有很多没有根的字符串,可能是其中许多是相当大的字符串(超过 85k),因此它们卡在 LOH 中,因此可能不会被收集为经常根据需要。有关详细信息,请参阅此主题:

    WinDbg not telling me where my string is rooted

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2016-02-24
      • 2021-11-15
      • 2012-03-25
      • 2011-12-05
      • 1970-01-01
      相关资源
      最近更新 更多