]> git.llucax.com Git - z.facultad/75.00/informe.git/blobdiff - source/gc.rst
Mencionar problema de fragmentación
[z.facultad/75.00/informe.git] / source / gc.rst
index 3141526deef7bb51a62b79d0507f3c7e02f59e20..6abc764357d16f414b1794df82df06d28af10bc1 100644 (file)
@@ -1687,7 +1687,16 @@ utiliza para asignar nuevas celdas de forma lineal, asumiendo un *heap*
 contiguo, incrementando un puntero (ver figura :vref:`fig:gc-copy`).  Esto se
 conoce como *pointer bump allocation* y es, probablemente, la forma más
 eficiente de asignar memoria (tan eficiente como asignar memoria en el
-*stack*).
+*stack*). Esto permite además evitar el problema de la *fragmentación* de
+memoria [#gcfrag]_ que normalmente afectan a los otros algoritmos clásicos (o
+sus *low level allocators*).
+
+.. [#gcfrag] La *fragmentación* de memoria sucede cuando se asignan objetos
+   de distintos tamaños y luego libera alguno intermedio, produciendo
+   *huecos*. Estos *huecos* quedan inutilizables hasta que se quiera
+   asignar un nuevo objeto de tamaño igual al *hueco* (o menor). Si esto no
+   sucede y se acumulan muchos *huecos* se dice que la memoria está
+   *fragmentada*.
 
 .. fig:: fig:gc-copy
 
@@ -2403,7 +2412,7 @@ conservativismo son el :ref:`recolector actual de D <dgc_actual>` y [BLAC08]_.
 
 .. _gc_part:
 
-Recolección particionada
+Recolección particionada / generacional
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Otra forma de reducir la cantidad de pausas y la cantidad de trabajo realizado