2 .. Se presentan las conclusiones del trabajo, comparando los resultados
3 obtenidos con el punto de partida. Se mencionan puntos pendientes o
4 nuevas líneas de investigación.
11 ============================================================================
18 ----------------------------------------------------------------------------
23 http://thecybershadow.net/d/Memory_Management_in_the_D_Programming_Language.pdf
27 ----------------------------------------------------------------------------
31 * Cambiar el layout de memoria (mostrar lo encontrado en el post). Se podría
32 usar un tamaño de bloque por cada tipo de dato (y por lo tanto una lista de
33 libres por cada tipo de dato). Esto podría ahorrar muchos bits (mark,
34 freebits, scan, etc.), el puntero al pointer mask se guardaría una sola vez,
35 no hay ningún desperdicio de espacio salvo algún padding, pero podrían haber
36 esquemas donde ni siquiera (si siempre se alocan tantas páginas como sean
37 necesarias para evitar el padding para un tamaño de bloque). Un tipo de dato
38 NO_SCAN no alocaría directamente bits de noscan, mark y scan. Se podría
39 tratar de forma especial a strings.
41 * Concurrent sweeping (lanzar fase de sweep en un thread que no pertenezca al
43 * Continuous collection (lanzar un thread que esté haciendo fullcollect() en
44 un loop). Lo bueno es que el sweep podría correr en ese thread, bajando aún
45 más el tiempo máximo de pausa (aunque esto se puede hacer más allá de hacer
46 continuous collection, ver "concurrent sweeping"), lo malo es que tal vez se
47 estaría recolectando demasiado sin ninguna ganancia substancial.
48 * Medir mejor cuando lanzar una recolección cuando se usa early collection
49 (por ejemplo medir la tasa de alocación y el tiempo de recolección y así
50 hallar el momento ideal para lanzar la recolección).
51 * Emprolijar todavía más el código (o reescribirlo).
52 * Hacer preciso el static data por el tema de los TypeInfo's que ocupan mucha
53 memoria que debe ser escaneada.
56 .. vim: set ts=3 sts=3 sw=3 et tw=78 :