当!gcroot与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
    

解决方法

        没有根意味着没有对象。 当某个对象不可访问时,垃圾收集器会将该对象视为垃圾,并可以对其进行收集。 在其生命周期中某个时刻没有根的对象是正常现象,实际上对于垃圾回收的工作方式至关重要。 参考: 垃圾收集:Microsoft .NET Framework中的自动内存管理 垃圾收集 垃圾收集器的基本知识和性能提示     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...