Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#循环引用对GC性能的影响_C#_Garbage Collection_Circular Reference - Fatal编程技术网

C#循环引用对GC性能的影响

C#循环引用对GC性能的影响,c#,garbage-collection,circular-reference,C#,Garbage Collection,Circular Reference,可能重复: 如果对象具有循环引用,但没有附加到任何根,因此适合GC,那么对GC性能有影响吗 在一个方向上有一个弱的ref有什么好处吗 如果对象具有循环引用,但没有附加到任何根,因此适合GC,那么对GC性能有影响吗 没有。基本上,当没有强引用时,这两个对象都有资格进行垃圾收集。。。您无需担心。如果无法从根目录访问对象,它们将不会被遍历,因此循环引用不会成为问题 如果对象具有循环引用,是否会影响GC性能 否。扫描过程在遇到已访问的实例时停止。非圆形结构不存在差异 但是,它们在其他方面与任何根都不相

可能重复:

如果对象具有循环引用,但没有附加到任何根,因此适合GC,那么对GC性能有影响吗

在一个方向上有一个弱的ref有什么好处吗

如果对象具有循环引用,但没有附加到任何根,因此适合GC,那么对GC性能有影响吗


没有。基本上,当没有强引用时,这两个对象都有资格进行垃圾收集。。。您无需担心。

如果无法从根目录访问对象,它们将不会被遍历,因此循环引用不会成为问题

如果对象具有循环引用,是否会影响GC性能

否。扫描过程在遇到已访问的实例时停止。非圆形结构不存在差异

但是,它们在其他方面与任何根都不相连,因此适合GC


在这种情况下,他们将根本不会被访问,这使得有多少交叉链接完全无关紧要

干净利落!但是(边情况),如果对象的唯一引用是弱引用,那么在删除最后一个强引用时,是否可以不标记它,从而完全消除扫描的需要?我想,如果对其他物体进行扫描,这并不重要……我不知道你的意思。如果你的意思是在GC运行之前标记一个对象,那么,这将涉及到在整个根目录中搜索剩余的引用,GC无论如何都会这样做,所以这将是非常低效的。我的印象是,除了标记和扫描之外,还有参考计数。不要介意!谢谢大家的回答,你们都回答了一个很难选择“正确”答案的问题,所以我把它给了这里得分最少的人:)