2009-01-09 20 views

Respuesta

20

Sí, lo son. Básicamente, el GC camina desde "raíces conocidas" (variables estáticas, variables locales de todos los cuadros de pila en todos los hilos) para encontrar objetos que no pueden ser recolectados. Si no hay forma de llegar a un objeto desde una raíz, es elegible para la recolección.

EDIT: Tom señaló esto, lo cual pensé que valía la pena levantar en la respuesta en sí:

Técnicamente, las variables estáticas no son raíces - que son referenciados por las clases la que hacen referencia los cargadores de clases a los que se hace referencia en las clases que se hace referencia por objeto que son a los que se hace referencia por referencias de raíz.

La diferencia es probable que sea irrelevante más de las veces, pero es bueno saber :)

+0

Técnicamente, las variables estáticas no son raíces, sino que son referenciadas por clases a las que hacen referencia los cargadores de clase a los que hacen referencia las clases a las que hace referencia el objeto al que hacen referencia las referencias raíz. –

+0

@Tom: Buena llamada. Edición... –

4

skeet sobre el dinero, como de costumbre. Solo agregaría que la situación que describes es la razón por la que no se usa el recuento de referencias (una estrategia estándar con los primeros punteros inteligentes de C++).

Cuestiones relacionadas