Si tengo dos objetos en el montón que se refieren entre sí pero que no están vinculados a ninguna variable de referencia, ¿son esos objetos elegibles para la recolección de basura?Comportamiento de recolección de basura con referencias cíclicas aisladas?
Respuesta
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 :)
Mira esto: How does Java Garbage Collector Handle Self References.
Es posible que desee comprobar java.lang.ref.WeakReference
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++).
- 1. ¿WinRT tiene recolección de basura?
- 2. y recolección de basura
- 3. Recolección de basura
- 4. ¿Notificación de recolección de basura?
- 5. C# Recolección de basura Active Roots
- 6. C colección # basura con referencias a objetos
- 7. recolección de basura de java
- 8. JAXB Asignación de referencias cíclicas a XML
- 9. Retraso de recolección de basura?
- 10. multiprocesamiento y recolección de basura
- 11. Recolección de basura en Delphi
- 12. JVM sin recolección de basura
- 13. referencia interna impide la recolección de basura
- 14. ¿NewLISP usa la recolección de basura?
- 15. recolección de basura en C++ 11
- 16. ¿Deberíamos utilizar la recolección de basura "estación de trabajo" o la recolección de basura "servidor"?
- 17. ¿La serialización Java funciona para referencias cíclicas?
- 18. Patrones inusuales de recolección de basura
- 19. extremadamente largos tiempos de recolección de basura
- 20. Supresión de la recolección de basura C#
- 21. Reglas de cierre de recolección de basura con Javascript
- 22. Fuga de memoria con la recolección de basura de Cocoa
- 23. ¿Trabajador de fondo y recolección de basura?
- 24. Uso de la recolección de basura?
- 25. Recolección de basura de los miembros estáticos
- 26. Recolección de basura de campos privados
- 27. Node.js y V8 de recolección de basura
- 28. Herramienta de recolección de basura para dalvik
- 29. ¿Cómo funciona la recolección de basura en las referencias de objetos?
- 30. .NET Recolección de basura e hilos nativos
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. –
@Tom: Buena llamada. Edición... –