gpt4 book ai didi

c# - 当一个对象没有根时使用 !gcroot 和 SOS 是什么意思?

转载 作者:太空狗 更新时间:2023-10-30 01:09:40 24 4
gpt4 key购买 nike

我正在跟踪我正在使用的内存泄漏

!dumpheap -stat!dumpheap -mt!gcroot

但是 !gcroot 没有显示任何内容,我一直认为这意味着该对象没有引用但尚未被收集。但我不是 100% 有信心。

0:018> !dumpheap -mt 000007fee15f0bb0     
Address MT Size
000000001c87b570 000007fee15f0bb0 3145752
000000001cb7b588 000007fee15f0bb0 3145752
000000001e9675a8 000007fee15f0bb0 3145752
000000001ec675c0 000007fee15f0bb0 3145752


0:018> !gcroot 000000001ec675c0
Note: Roots found on stacks may be false positives. Run "!help gcroot" for
more info.
Scan Thread 0 OSTHread 1eb4
Scan Thread 2 OSTHread 1c60
Scan Thread 4 OSTHread 1370
Scan Thread 6 OSTHread d5c
Scan Thread 7 OSTHread 740
Scan Thread 10 OSTHread 40c
Scan Thread 14 OSTHread 20d4
Scan Thread 15 OSTHread 398
Scan Thread 16 OSTHread 214c
Scan Thread 17 OSTHread 2538

最佳答案

没有根意味着对象不可访问。

当一个对象不可达时,垃圾收集器认为该对象是垃圾,可以被收集。

对象在其生命周期的某个时刻没有根是正常现象,实际上对于垃圾收集的工作方式至关重要。

引用:

关于c# - 当一个对象没有根时使用 !gcroot 和 SOS 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6234178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com