]> git.llucax.com Git - z.facultad/75.00/informe.git/blobdiff - source/gc.rst
Corregir indentación
[z.facultad/75.00/informe.git] / source / gc.rst
index a1eb36080314e62a361ad32bfef5f7e8364a45a7..a221059fe528cf0a2d1bf863a929225592182585 100644 (file)
@@ -183,9 +183,9 @@ lenguajes de programación que requieran un recolector de basura conservativo.
 Por último, siendo que el recolector de basura es parte del programa de forma
 indirecta, es común ver en la literatura que se direfencia entre
 2 partes del programa, el recolector de basura y el programa en sí. Dado que
 Por último, siendo que el recolector de basura es parte del programa de forma
 indirecta, es común ver en la literatura que se direfencia entre
 2 partes del programa, el recolector de basura y el programa en sí. Dado que
-  para el recolector de basura, lo único que interesa conocer del programa en
-  sí son los cambios al grafo de conectividad de las celdas, normalmente se lo
-  llama *mutator* (mutador).
+para el recolector de basura, lo único que interesa conocer del programa en
+sí son los cambios al grafo de conectividad de las celdas, normalmente se lo
+llama *mutator* (mutador).
 
 
 
 
 
 
@@ -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
 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
 
 
 .. fig:: fig:gc-copy