#c# #windbg #sos
#c# #windbg #sos
Вопрос:
Я отслеживаю утечку памяти, в которой я использую
!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
Ответ №1:
Отсутствие корня означает, что объект недоступен.
Когда объект недоступен, сборщик мусора считает объект мусором и может быть собран.
Объект, не имеющий корня в какой-то момент своего жизненного цикла, является нормальным явлением, фактически необходимым для того, как работает сборка мусора.
Ссылки: