xamarin mono garbage-collection weak-references circular-reference

Colector de basura Xamarin y referencias circulares



mono garbage-collection (1)

Las pérdidas de memoria debidas a referencias circulares solo se aplican a Xamarin.iOS, que utiliza el recuento de referencias para objetos nativos.

La página sobre objetos inmortales también dice :

Boehm: este es un recolector de basura conservador y no generacional. Es el recolector de basura predeterminado que se utiliza para las aplicaciones Xamarin.iOS que usan la API clásica.

La segunda cita habla específicamente de Xamarin.Android.

Al leer los documentos de Xamarin en la sección "Rendimiento" , he notado el siguiente capítulo:

El siguiente diagrama ilustra un problema que puede ocurrir con referencias fuertes:

El objeto A tiene una fuerte referencia al objeto B, y el objeto B tiene una fuerte referencia al objeto A. Dichos objetos se conocen como objetos inmortales debido a la presencia de referencias circulares fuertes. Esta relación padre-hijo no es inusual, y como resultado, ninguno de los objetos puede ser recuperado por el recolector de basura, incluso si la aplicación ya no los utiliza.

Esa es la primera vez que escucho sobre "objetos inmortales" en el contexto C # /. NET / Mono.

La página continúa con una sugerencia para usar una WeakReference en uno de los objetos, que eliminará la referencia circular fuerte y solucionará este "problema".

Al mismo tiempo, Xamarin documenta en la recolección de basura que:

Xamarin.Android utiliza el recolector de basura Simple Generational de Mono. Este es un recolector de basura de marcaje y barrido [...]

¿Los GC no marcan y marcan no se ven afectados por las referencias circulares?