Si mi referencia a obj1 sale de alcance, pero mi referencia a obj2 hace no, es obj1 aún es elegible para recolección de basura, o hay algunos problemas de dependencia porque hay siendo una referencia a el objeto List ?
Si he entendido bien que quiere decir tanto obj1
y obj2
son de tipo List<string>
y ambos apuntan a la misma List<string>
ejemplo.
Cuando obj1
sale del alcance, todavía habrá obj2
como referencia activa para la instancia List<string>
, por lo que no se puede recolectar la basura.
Si obj1 era parte de un tipo de referencia en el montón (es decir, una de sus propiedades), el espacio de memoria que ocupaba podía ser basura recogida como parte del objeto externo. Si solo fuera una referencia en la pila, GC no estará involucrado ya que la pila simplemente se desenrollará al final de la llamada al método cuando obj1 se salga del alcance.
Tenga en cuenta que obj1 es solo una referencia (en cierto modo un puntero) a un objeto en el montón: este objeto puede ser basura recolectada solo cuando ya no hay ninguna referencia apuntando a él.
+! Buena pregunta, pero ¿podría escribirla en código? – harpo
Parece una buena pregunta, pero no estoy muy seguro porque no está claro qué está pasando con * obj1 *, * obj2 *, y los objetos List ... ¿puedes aclarar? –
Matt