что это значит, когда объект не имеет корня, используя! gcroot с SOS? - PullRequest
4 голосов
/ 04 июня 2011

Я отслеживаю утечку памяти, когда использую

! 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 Ответ

5 голосов
/ 04 июня 2011

Отсутствие корня означает, что объект недоступен.

Когда объект недоступен, сборщик мусора считает мусор объекта и может быть собран.

Объект, не имеющий корня в какой-то момент его жизни, фактически является нормальным явлением.важно, как работает сборка мусора.

Ссылки:

...