funciona como collector c# .net vb.net garbage-collection

c# - como - ¿La metodología de recolección de basura CLR significa que es seguro lanzar referencias circulares de objetos?



garbage collector c# como funciona (2)

Tengo la teoría de que el mecanismo de recolección de basura CLR significa que puedo salirse con las referencias circulares en la jerarquía de objetos sin crear interbloqueos para el desmontaje y la recolección de basura. ¿Es esto una suposición segura de hacer? (Idioma de destino VB.NET)


El recolector de basura .NET es una marca generacional y recopilador de barrido. No usa conteo de referencia. Entonces sí, es seguro tener referencias circulares. El lenguaje es irrelevante


Según este artículo: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5109829.html

La referencia circular es un problema que ocurre cuando hay dos objetos que se refieren el uno al otro. Digamos que tiene la clase A que se refiere a la clase B. Si la clase B también se refiere a la clase A, entonces tenemos una referencia circular. Esto sucede en muchas situaciones. Un ejemplo típico para esto es una relación padre-hijo entre objetos, donde el niño interactúa con el objeto padre y también contiene una referencia al objeto padre. Esto podría conducir a objetos que no se limpiarían hasta que la aplicación se apagara. El método .NET de recolección de basura resuelve el problema de la referencia circular porque el recolector de basura puede limpiar cualquier objeto que sea accesible desde la raíz.

EDITAR:
A juzgar por esta publicación: http://blogs.msdn.com/abhinaba/archive/2009/01/27/back-to-basics-reference-counting-garbage-collection.aspx parece que la recolección de basura de .Net no se basa en el recuento de referencias para la recolección de basura.

Otro artículo que vale la pena leer (explica la recolección de basura en detalle) es este: http://www.simple-talk.com/dotnet/.net-framework/understanding-garbage-collection-in-.net/