Estoy leyendo sobre el recolector de basura C# y cómo el CLR construye gráficos de objetos. Las referencias capítulo raíces diferentes que podrían ser activa para el objeto:C# Recolección de basura Active Roots
• Las referencias a objetos globales (aunque estos no están permitidos en C#, CIL código hace la asignación de permisos de objetos globales)
• Las referencias a cualquier objetos estáticos/campos estáticos
• referencias a objetos locales dentro de la base de código de una aplicación
• Referencias para oponerse parámetros pasados en un método
• Las referencias a objetos a la espera de ser fina lized (que se describe más adelante en este capítulo)
• Cualquier registro de la CPU que hace referencia a un objeto
Me preguntaba si alguien podría dar ejemplos de estas raíces en código?
Gracias
En este punto 'bar' puede ser elegible para la recopilación en modo de lanzamiento ya que no se hace referencia después del salto. –
Brian es correcto, 'bar' solo se mantendría con vida en * modo de depuración * seguro hasta el final del método Main, que es solo para la conveniencia de la depuración, en modo de liberación se puede recopilar' bar'. – BrokenGlass
Creo que si se está ejecutando en DEBUG, los objetos estarán siempre seguros hasta que la función finalice de todos modos. Aunque creo que estás en lo correcto con el código optimizado. –