¿Delphi tiene Garbage Collection
?Recolección de basura en Delphi
Respuesta
Respuesta simple Nº
Delphi no es un completo lenguaje de recolección de basura, tipos definidos por el usuario se deben asignar y desasignar manualmente. Solo proporciona recolección automática, para algunos tipos incorporados, como cadenas, matrices dinámicas e interfaces para facilitar su uso.
Pero puede usar interfaces que utilizan el recuento de referencias para la recolección de basura hasta cierto punto.
En el sentido habitual de la recolección de basura, donde el tiempo de ejecución detecta objetos sin referencia y los destruye o recupera recursos no utilizados, no, Delphi no tiene recolección de basura.
Si usa Win32 Delphi nativo, lo más cercano que tiene a la recolección de elementos no utilizados son los distintos tipos de referencias contadas, incluidas cadenas, interfaces, variantes y matrices dinámicas. Esos tipos se limpiarán automáticamente cuando su programa determine que ya no se usan, pero lo hace al mantener un recuento de referencias cuando esos objetos ingresan y abandonan el alcance actual. También tiene el concepto de propiedad , que destruirá los componentes de propiedad cuando el propietario se destruye.
Si utiliza Delphi para .Net, entonces implícitamente tiene la colección de elementos no utilizados del tiempo de ejecución subyacente.
Delphi.NET está muerto desde hace más de 2 años –
Sí, @User, y como Delphi 7 tiene una década de antigüedad, debe estar muerto, también. Además, el lenguaje Delphi sigue estando disponible para .Net a través de Prism. –
Prism ni siquiera intenta compartir fuente, por lo que no veo exactamente como una continuación. Excepto por la marca registrada. –
Sí, lo hace.
Delphi Win32 no incluye un recolector de basura fuera de la caja por lo que las otras respuestas a esta pregunta son técnicamente correctas. Sin embargo, esto no implica que no sea posible o que uno no exista ya. Gracias al gestor de memoria reemplazable de Delphi Barry Kelly implementado un completo y funcional para el wrapperBoehm garbage collector en 2004.
Incluye código de ejemplo que demuestra su uso (básicamente la creación de objetos no asignados y viendo la GC ellos masticar). Hay GC más avanzados que el Boehm GC, pero esto demuestra claramente que es posible y se puede usar casi de forma transparente. Simplemente agregue la unidad gc al principio de la cláusula de usos de su proyecto.
Y si bien no he oído hablar de ningún proyecto que lo intente, no hay nada que impida que alguien envuelva o transfiera un gc más avanzado.
Delphi Prism-
tiene Recolección de basura, ya que se basa en .NET
Delphi estándar (Win32 nativo)
Flexible No tiene Recolección de Basura
Delphi Win32/64 no tiene un recolector de basura. Sin embargo, puede aprovechar el mecanismo de conteo de referencias nativas de Delphi para que las instancias se liberen automáticamente mediante el uso de interfaces.
Las diferencias entre un recolector de basura y un mecanismo de recuento de referencias es que tendrá que tratar con referencias circulares, es decir, si las instancias A y B se referencian, debe romper manualmente el ciclo para A o B. .
- 1. Recolección de basura
- 2. y recolección de basura
- 3. ¿Notificación de recolección de basura?
- 4. recolección de basura de java
- 5. Retraso de recolección de basura?
- 6. multiprocesamiento y recolección de basura
- 7. JVM sin recolección de basura
- 8. ¿WinRT tiene recolección de basura?
- 9. Recolección de basura en .NET 4.0
- 10. Recolección de basura, ¿debemos confiar en ella?
- 11. Forzar recolección de basura en AS3?
- 12. recolección de basura en C++ 11
- 13. Recolección de basura en hilos Perl
- 14. Recolección de basura en una variable local
- 15. ¿Hay recolección de basura en PHP?
- 16. Recolección de basura en dalvik vm
- 17. Recolección de basura en .NET (generaciones)
- 18. ¿Deberíamos utilizar la recolección de basura "estación de trabajo" o la recolección de basura "servidor"?
- 19. Patrones inusuales de recolección de basura
- 20. Node.js y V8 de recolección de basura
- 21. Uso de la recolección de basura?
- 22. extremadamente largos tiempos de recolección de basura
- 23. ¿Trabajador de fondo y recolección de basura?
- 24. Supresión de la recolección de basura C#
- 25. Herramienta de recolección de basura para dalvik
- 26. Recolección de basura de los miembros estáticos
- 27. Recolección de basura de campos privados
- 28. ¿Qué desencadena una recolección de basura gen2?
- 29. .NET Recolección de basura e hilos nativos
- 30. ¿NewLISP usa la recolección de basura?
También vale la pena mencionar que todo lo que se deriva de TComponent toma un puntero de propietario a través del constructor, lo que hace que el objeto se destruya junto con su propietario. –
basura delphi recoge algunos tipos de datos, como matriz dinámica, cadena. –
Delphi está familiarizado con ARC (conteo automático de referencias), una forma de administrar el tiempo de vida de las interfaces (implementación de RefCount) y otros tipos. Hoy en día, el compilador móvil Delphi más nuevo ha introducido ARC a los objetos. Está controlado por una directiva de compilación "{$ AUTOREFCOUNT}". Ver el enlace a continuación: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Automatic_Reference_Counting_in_Delphi_Mobile_Compilers – Lucas