2 ==========================
3 Recolección de Basura en D
4 ==========================
6 :Autor: Leandro Lucarella
12 ==============================================================================
15 --------------------------------------------------
19 * Recolección de basura
20 * Lenguaje de programación **D**
21 * Utilidad → Software Libre → Contribución
25 --------------------------------------------------
31 * Administración automática de memoria
35 * Simplificar interfaces
36 * Mejorar eficiencia (**!**)
37 * Evitar errores de memoria
47 * Conteo de referencias
48 * **Marcado y barrido**
49 * Copia de semi-espacio
53 \multiinclude[format=pdf,graphics={height=4.5cm}]{img/mark-sweep}
55 .. dummy: para que ande bien el raw de arriba
59 * Medio siglo de investigación y desarrollo (3000+ publicaciones)
62 * ↓ Tiempo total de ejecución
63 * ↓ Cantidad de recolecciones
64 * ↓ Tiempo de recolección
65 * ↓ **Tiempo (máximo) de pausa**
71 * Organización de memoria
76 El lenguaje de programación D
77 --------------------------------------------------
79 Características generales
80 ~~~~~~~~~~~~~~~~~~~~~~~~~
83 * Sistema de tipos estático
88 * Programación de bajo nivel (*system-programming*) ← C/C++
95 → Conservativo + Manipulación de *root set*
97 * Programación de alto nivel ← Python/Ruby/Perl
102 → Punteros interiores
104 * Orientación a objetos ← Java
121 Recolección de Basura en D
122 ==============================================================================
125 --------------------------------------------------
129 * Programación de bajo nivel
136 → Conservativo + Manipulación de *root set*
138 * Programación de alto nivel ← Python/Ruby/Perl
142 → Punteros interiores
144 * Orientación a objetos ← Java
151 Implementación Actual
152 --------------------------------------------------
154 Organización del heap
155 ~~~~~~~~~~~~~~~~~~~~~
156 .. image:: img/heap.pdf
164 Lo Bueno, lo Malo y lo Feo
165 --------------------------------------------------
177 Modificaciones Propuestas
178 ==============================================================================
181 --------------------------------------------------
193 --------------------------------------------------
205 --------------------------------------------------
218 ==============================================================================
221 --------------------------------------------------
232 Tiempo de Stop-The-World
233 --------------------------------------------------
245 --------------------------------------------------
257 --------------------------------------------------
269 ==============================================================================
272 --------------------------------------------------
276 * Recolección de basura → Inagotable
277 * D → Multi-paradigma → Desafío
278 * Recolección de basura en D → Fértil
279 * Mejoras propuestas → Efectivas
280 * Resultados → Positivos: Esperados + Inesperados
282 Problemas, limitaciones y Puntos Pendientes
283 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
284 * Predicción de *early collection*
285 * Explosión de uso de memoria con *eager allocation*
286 * Experimentar con ``clone(2)``
287 * Eficiencia de marcado
289 Trabajos Relacionados
290 ~~~~~~~~~~~~~~~~~~~~~
291 * *Memory Management in the D Programming Language*
293 Vladimir Panteleev. Proyecto de licenciatura, Universitatea Tehnică
296 * *Integrate Precise Heap Scanning Into the GC*
298 David Simcha (GC + diseño) + Vincent Lang (compilador). No formal, *bug
303 * Organización de memoria
306 * Concurrencia → *Lock* **global**
317 .. vim: set et sw=4 sts=4 spell spelllang=es :