]> git.llucax.com Git - z.facultad/75.00/informe.git/blobdiff - source/gc.rst
Agregar editorial a referencia [LINS05]
[z.facultad/75.00/informe.git] / source / gc.rst
index 86463bf9b03464df5809ed6b6cf7b77321820857..0b91155c37e2b595122ae115b1cdeee7ff6bf64a 100644 (file)
@@ -1721,21 +1721,22 @@ eficiente de alocar memoria (tan eficiente como alocar memoria en el *stack*).
       /|                              /|    BB "Tospace"
 
 
       /|                              /|    BB "Tospace"
 
 
-La segunda mitad (*Tospace*) permanece ociosa hasta que se agota el espacio en
-el *Fromspace*; en ese momento comienza el proceso de recolección de basura
-que consiste en recorrer el grafo de conectividad, copiando las celdas *vivas*
-del *Fromspace* al *Tospace* de manera contigua, como si estuvieran alocando
-por primera vez. Como la posición en memoria de las celdas cambia al ser
-movidas, es necesario actualizar la dirección de memoria de todas las celdas
-*vivas*. Para esto se almacena una dirección de memoria de redirección,
-*forwarding address*, en las celdas que mueven. La *forwarding address* sirve
-a su vez de marca, para no recorrer una celda dos veces (como se explica en
-:ref:`ref_gc_intro_mark`). Cuando se encuentra una celda que ya fue movida,
-simplemente se actualiza la referencia por la cual se llegó a esa celda para
-que apunte a la nueva dirección, almacenada en la *forwarding address*. Una
-vez finalizado este proceso, el *Fromspace* y *Tospace* invierten roles y se
-prosigue de la misma manera (todo lo que quedó en el viejo *Fromspace* es
-*basura* por definición, por lo que se convierte el *Tospace*).
+La segunda mitad (*Tospace*) permanece inutilizada hasta que se agota el
+espacio en el *Fromspace*; en ese momento comienza el proceso de recolección
+de basura que consiste en recorrer el grafo de conectividad, copiando las
+celdas *vivas* del *Fromspace* al *Tospace* de manera contigua, como si
+estuvieran alocando por primera vez. Como la posición en memoria de las celdas
+cambia al ser movidas, es necesario actualizar la dirección de memoria de
+todas las celdas *vivas*. Para esto se almacena una dirección de memoria de
+redirección, *forwarding address*, en las celdas que mueven. La *forwarding
+address* sirve a su vez de marca, para no recorrer una celda dos veces (como
+se explica en :ref:`ref_gc_intro_mark`). Cuando se encuentra una celda que ya
+fue movida, simplemente se actualiza la referencia por la cual se llegó a esa
+celda para que apunte a la nueva dirección, almacenada en la *forwarding
+address*. Una vez finalizado este proceso, el *Fromspace* y *Tospace*
+invierten roles y se prosigue de la misma manera (todo lo que quedó en el
+viejo *Fromspace* es *basura* por definición, por lo que se convierte el
+*Tospace*).
 
 A continuación se presenta una implementación sencilla de los servicios
 provistos por este tipo de recolectores. Cabe destacar que este tipo de
 
 A continuación se presenta una implementación sencilla de los servicios
 provistos por este tipo de recolectores. Cabe destacar que este tipo de