Opened 14 years ago
Last modified 13 years ago
#1079 closed defect
¿Podría usarse un Garbage collector en TOL? — at Version 3
Reported by: | Víctor de Buen Remiro | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | low | Milestone: | Mantainance |
Component: | Kernel | Version: | |
Severity: | minor | Keywords: | Garbage collector |
Cc: | Jorge, Pedro Gea |
Description (last modified by )
El sistema de conteo de referencias de TOL es muy complicado y tiene errores y situaciones inesperadas que producen a veces pérdidas de memoria (memory leaks) y otros errores peores aunque con menor frecuencia.
Si existiera un sistema de recolección de basura (GC: Garbage Collector) que se ocupara de ese problema de forma externa podríamos ahorrarnos mucho esfuerzo en la persecución de este tipo de errores, que son tremendamente difíciles de aislar y aún más de arreglar.
Tal sistema debería integrarse en el código C++ de TOL de forma opcional mediante compilación condicional, al menos durante un largo periodo de pruebas, pues no está claro que no vaya a afectar a la eficiencia de TOL o que pueda ocasionar otro tipo de problemas.
Estas son las posibilidades que se recomiendan a la hora de integrar un GC en una aplicación C/C++:
- Conservative garbage collector: Estos sistemas aportan funciones de asignación y reasignación que hay que llamar en lugar de malloc, realloc o new. En teoría es posible sustituir las funciones del sistema por las del GC para que no haya que tocar el código. Aquí se pueden ver ventajas e inconvenientes de este tipo de sistemas
- Boehm-Demers-Weiser GC: de HP con licencia GPL
- libgc : Creo sólo funciona en el sistema Oracle Solaris y no estoy seguro del tipo de licencia.
- CGCC: Proyecto unipersonal de Yasin HINISLIOGLU con licencia GPL
- Template Smart Pointers: Hay que heredar de una clase base y llamar a un template del tipo para el alojamiento de memoria. Sólo sirve en C++ por razones obvias.
- shared_ptr: se distribuye dentro de BOOST
- gcPtr: Proyecto unipersonal sin licencia específica
Change History (3)
comment:1 Changed 14 years ago by
Cc: | Jorge Pedro Gea added |
---|
comment:2 Changed 14 years ago by
Description: | modified (diff) |
---|
comment:3 Changed 14 years ago by
Description: | modified (diff) |
---|